$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r51869 - in sandbox/numeric_bindings/boost/numeric/bindings/lapack: computational driver
From: rutger_at_[hidden]
Date: 2009-03-20 12:43:39
Author: rutger
Date: 2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
New Revision: 51869
URL: http://svn.boost.org/trac/boost/changeset/51869
Log:
Updated computational and driver routines in lapack
Text files modified: 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsdc.hpp |    24 ++++-----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsqr.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbbrd.hpp |    67 +++++++++++++---------------            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbcon.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbequ.hpp |    12 ++---                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbrfs.hpp |    36 ++++++--------                          
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbtrf.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbtrs.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebak.hpp |    12 ++---                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebal.hpp |    12 ++---                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebrd.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gecon.hpp |    31 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geequ.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gehrd.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gelqf.hpp |    31 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geqlf.hpp |    31 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geqp3.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geqrf.hpp |    31 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerfs.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerqf.hpp |    31 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getrf.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getri.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getrs.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbak.hpp |    12 ++---                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbal.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gghrd.hpp |    13 ++---                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggqrf.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggrqf.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggsvp.hpp |    36 ++++++--------                          
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gtrfs.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gttrs.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbgst.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbtrd.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hegst.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/herfs.hpp |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrd.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrf.hpp |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetri.hpp |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrs.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hgeqz.hpp |    34 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hprfs.hpp |    25 ++++------                              
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrs.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hsein.hpp |    42 ++++++++---------                       
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hseqr.hpp |    65 +++++++++++++---------------            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/labrd.hpp |    12 ++---                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/lacon.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/laebz.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/larz.hpp  |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp |    12 ++---                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp |    12 ++---                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrz.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opgtr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opmtr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgbr.hpp |    31 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orghr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orglq.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgql.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgqr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgrq.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormbr.hpp |    20 +++-----                                
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormhr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormlq.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormql.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormqr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrq.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrz.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormtr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp |    12 ++---                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbrfs.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbstf.hpp |     8 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrf.hpp |     8 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/poequ.hpp |    12 ++---                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/porfs.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrf.hpp |     8 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potri.hpp |     8 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrs.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pprfs.hpp |    36 ++++++--------                          
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrs.hpp |     8 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pteqr.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ptrfs.hpp |    35 ++++++--------                          
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pttrs.hpp |    16 +++---                                  
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbgst.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbtrd.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sprfs.hpp |    40 +++++++---------                        
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrs.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stebz.hpp |    48 ++++++++++----------                    
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stedc.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stegr.hpp |    38 +++++++--------                         
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stein.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/steqr.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sterf.hpp |     8 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sygst.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/syrfs.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrd.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrf.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytri.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrs.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp |    38 +++++++--------                         
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbrfs.hpp |    36 ++++++--------                          
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbtrs.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgevc.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgexc.hpp |    24 ++++------                              
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsen.hpp |    40 +++++++---------                        
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsja.hpp |    37 ++++++---------                         
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsna.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsyl.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tprfs.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptri.hpp |     8 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptrs.hpp |    10 +---                                    
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trevc.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trexc.hpp |    22 ++++-----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trrfs.hpp |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsen.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsna.hpp |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsyl.hpp |    14 ++---                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtri.hpp |     8 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtrs.hpp |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tzrzf.hpp |    31 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungbr.hpp |    31 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unghr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unglq.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungql.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungqr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungrq.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmbr.hpp |    20 +++-----                                
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmhr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmlq.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmql.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmqr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrq.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrz.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmtr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upgtr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upmtr.hpp |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cgesv.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsv.hpp         |    15 +++--                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsvx.hpp        |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gees.hpp         |    34 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geesx.hpp        |    34 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geev.hpp         |    36 ++++++--------                          
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geevx.hpp        |    92 ++++++++++++++++++--------------------- 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gegv.hpp         |    40 +++++++---------                        
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gels.hpp         |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsd.hpp        |    34 ++++++--------                          
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelss.hpp        |    34 ++++++--------                          
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsy.hpp        |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesdd.hpp        |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesv.hpp         |    15 +++--                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvd.hpp        |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvx.hpp        |    36 ++++++--------                          
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gges.hpp         |    85 ++++++++++++++++--------------------    
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggesx.hpp        |    78 ++++++++++++++++-----------------       
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggev.hpp         |    40 +++++++---------                        
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggevx.hpp        |    88 +++++++++++++++++--------------------   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggglm.hpp        |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gglse.hpp        |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggsvd.hpp        |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsv.hpp         |    14 +++--                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsvx.hpp        |    36 ++++++--------                          
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbev.hpp         |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevd.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp        |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgv.hpp         |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvd.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heev.hpp         |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevd.hpp        |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp        |    22 ++++-----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp        |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegv.hpp         |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvd.hpp        |    23 ++++-----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesv.hpp         |    25 ++++++----                              
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpev.hpp         |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevd.hpp        |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp        |    22 ++++-----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgv.hpp         |    23 ++++-----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvd.hpp        |    23 ++++-----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsv.hpp         |    15 +++--                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lacgv.hpp        |     9 +--                                     
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lalsd.hpp        |    30 ++++++------                            
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/largv.hpp        |    12 ++---                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsv.hpp         |    15 +++--                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp        |    40 +++++++---------                        
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posv.hpp         |    15 +++--                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp        |    36 ++++++--------                          
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsv.hpp         |    15 +++--                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp        |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ptsv.hpp         |    28 ++++++++---                             
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ptsvx.hpp        |    34 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbev.hpp         |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevd.hpp        |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp        |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgv.hpp         |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvd.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sgesv.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spev.hpp         |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevd.hpp        |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp        |    22 ++++-----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgv.hpp         |    23 ++++-----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvd.hpp        |    23 ++++-----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsv.hpp         |    15 +++--                                   
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp        |    32 ++++++-------                           
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stev.hpp         |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevd.hpp        |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevr.hpp        |    22 ++++-----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevx.hpp        |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syev.hpp         |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevd.hpp        |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp        |    22 ++++-----                               
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp        |    18 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygv.hpp         |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvd.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp        |    19 +++----                                 
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysv.hpp         |    44 +++++++++++-------                      
   sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp        |    32 ++++++-------                           
   229 files changed, 2461 insertions(+), 3027 deletions(-)
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsdc.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsdc.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsdc.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_BDSDC_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -56,13 +54,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixU,
             typename MatrixVT, typename VectorQ, typename VectorIQ,
             typename WORK, typename IWORK >
-    static void compute( char const uplo, char const compq, integer_t const n,
+    static void invoke( char const uplo, char const compq, integer_t const n,
             VectorD& d, VectorE& e, MatrixU& u, MatrixVT& vt, VectorQ& q,
             VectorIQ& iq, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
@@ -98,23 +96,23 @@
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixU,
             typename MatrixVT, typename VectorQ, typename VectorIQ >
-    static void compute( char const uplo, char const compq, integer_t const n,
+    static void invoke( char const uplo, char const compq, integer_t const n,
             VectorD& d, VectorE& e, MatrixU& u, MatrixVT& vt, VectorQ& q,
             VectorIQ& iq, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( compq,
                 n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( uplo, compq, n, d, e, u, vt, q, iq, info,
-                workspace( tmp_work, tmp_iwork ) );
+        invoke( uplo, compq, n, d, e, u, vt, q, iq, info, workspace( tmp_work,
+                tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixU,
             typename MatrixVT, typename VectorQ, typename VectorIQ >
-    static void compute( char const uplo, char const compq, integer_t const n,
+    static void invoke( char const uplo, char const compq, integer_t const n,
             VectorD& d, VectorE& e, MatrixU& u, MatrixVT& vt, VectorQ& q,
             VectorIQ& iq, integer_t& info, optimal_workspace work ) {
-        compute( uplo, compq, n, d, e, u, vt, q, iq, info,
+        invoke( uplo, compq, n, d, e, u, vt, q, iq, info,
                 minimal_workspace() );
     }
 
@@ -141,8 +139,8 @@
         VectorQ& q, VectorIQ& iq, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    bdsdc_impl< value_type >::compute( uplo, compq, n, d, e, u, vt, q,
-            iq, info, work );
+    bdsdc_impl< value_type >::invoke( uplo, compq, n, d, e, u, vt, q, iq,
+            info, work );
     return info;
 }
 
@@ -154,8 +152,8 @@
         VectorQ& q, VectorIQ& iq ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    bdsdc_impl< value_type >::compute( uplo, compq, n, d, e, u, vt, q,
-            iq, info, optimal_workspace() );
+    bdsdc_impl< value_type >::invoke( uplo, compq, n, d, e, u, vt, q, iq,
+            info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsqr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsqr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/bdsqr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_BDSQR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -83,12 +81,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixVT,
             typename MatrixU, typename MatrixC, typename WORK >
-    static void compute( char const uplo, integer_t const n, VectorD& d,
+    static void invoke( char const uplo, integer_t const n, VectorD& d,
             VectorE& e, MatrixVT& vt, MatrixU& u, MatrixC& c, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -125,22 +123,22 @@
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixVT,
             typename MatrixU, typename MatrixC >
-    static void compute( char const uplo, integer_t const n, VectorD& d,
+    static void invoke( char const uplo, integer_t const n, VectorD& d,
             VectorE& e, MatrixVT& vt, MatrixU& u, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n,
                 traits::matrix_num_columns(vt), traits::matrix_num_rows(u),
                 traits::matrix_num_columns(c) ) );
-        compute( uplo, n, d, e, vt, u, c, info, workspace( tmp_work ) );
+        invoke( uplo, n, d, e, vt, u, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixVT,
             typename MatrixU, typename MatrixC >
-    static void compute( char const uplo, integer_t const n, VectorD& d,
+    static void invoke( char const uplo, integer_t const n, VectorD& d,
             VectorE& e, MatrixVT& vt, MatrixU& u, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
-        compute( uplo, n, d, e, vt, u, c, info, minimal_workspace() );
+        invoke( uplo, n, d, e, vt, u, c, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n, integer_t const ncvt,
@@ -158,12 +156,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixVT,
             typename MatrixU, typename MatrixC, typename RWORK >
-    static void compute( char const uplo, integer_t const n, VectorD& d,
+    static void invoke( char const uplo, integer_t const n, VectorD& d,
             VectorE& e, MatrixVT& vt, MatrixU& u, MatrixC& c, integer_t& info,
             detail::workspace1< RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -197,22 +195,22 @@
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixVT,
             typename MatrixU, typename MatrixC >
-    static void compute( char const uplo, integer_t const n, VectorD& d,
+    static void invoke( char const uplo, integer_t const n, VectorD& d,
             VectorE& e, MatrixVT& vt, MatrixU& u, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n,
                 traits::matrix_num_columns(vt), traits::matrix_num_rows(u),
                 traits::matrix_num_columns(c) ) );
-        compute( uplo, n, d, e, vt, u, c, info, workspace( tmp_rwork ) );
+        invoke( uplo, n, d, e, vt, u, c, info, workspace( tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixVT,
             typename MatrixU, typename MatrixC >
-    static void compute( char const uplo, integer_t const n, VectorD& d,
+    static void invoke( char const uplo, integer_t const n, VectorD& d,
             VectorE& e, MatrixVT& vt, MatrixU& u, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
-        compute( uplo, n, d, e, vt, u, c, info, minimal_workspace() );
+        invoke( uplo, n, d, e, vt, u, c, info, minimal_workspace() );
     }
 
     static integer_t min_size_rwork( integer_t const n, integer_t const ncvt,
@@ -232,7 +230,7 @@
         VectorE& e, MatrixVT& vt, MatrixU& u, MatrixC& c, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    bdsqr_impl< value_type >::compute( uplo, n, d, e, vt, u, c, info,
+    bdsqr_impl< value_type >::invoke( uplo, n, d, e, vt, u, c, info,
             work );
     return info;
 }
@@ -244,7 +242,7 @@
         VectorE& e, MatrixVT& vt, MatrixU& u, MatrixC& c ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    bdsqr_impl< value_type >::compute( uplo, n, d, e, vt, u, c, info,
+    bdsqr_impl< value_type >::invoke( uplo, n, d, e, vt, u, c, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbbrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbbrd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbbrd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GBBRD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -87,16 +85,16 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename VectorD, typename VectorE,
             typename MatrixQ, typename MatrixPT, typename MatrixC,
             typename WORK >
-    static void compute( char const vect, integer_t const m,
-            integer_t const n, integer_t const kl, integer_t const ku,
-            MatrixAB& ab, VectorD& d, VectorE& e, MatrixQ& q, MatrixPT& pt,
-            MatrixC& c, integer_t& info, detail::workspace1< WORK > work ) {
+    static void invoke( char const vect, integer_t const m, integer_t const n,
+            integer_t const kl, integer_t const ku, MatrixAB& ab, VectorD& d,
+            VectorE& e, MatrixQ& q, MatrixPT& pt, MatrixC& c, integer_t& info,
+            detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixAB >::value_type, typename traits::vector_traits<
                 VectorD >::value_type >::value) );
@@ -136,23 +134,23 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename VectorD, typename VectorE,
             typename MatrixQ, typename MatrixPT, typename MatrixC >
-    static void compute( char const vect, integer_t const m,
-            integer_t const n, integer_t const kl, integer_t const ku,
-            MatrixAB& ab, VectorD& d, VectorE& e, MatrixQ& q, MatrixPT& pt,
-            MatrixC& c, integer_t& info, minimal_workspace work ) {
+    static void invoke( char const vect, integer_t const m, integer_t const n,
+            integer_t const kl, integer_t const ku, MatrixAB& ab, VectorD& d,
+            VectorE& e, MatrixQ& q, MatrixPT& pt, MatrixC& c, integer_t& info,
+            minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( m, n ) );
-        compute( vect, m, n, kl, ku, ab, d, e, q, pt, c, info,
+        invoke( vect, m, n, kl, ku, ab, d, e, q, pt, c, info,
                 workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename VectorD, typename VectorE,
             typename MatrixQ, typename MatrixPT, typename MatrixC >
-    static void compute( char const vect, integer_t const m,
-            integer_t const n, integer_t const kl, integer_t const ku,
-            MatrixAB& ab, VectorD& d, VectorE& e, MatrixQ& q, MatrixPT& pt,
-            MatrixC& c, integer_t& info, optimal_workspace work ) {
-        compute( vect, m, n, kl, ku, ab, d, e, q, pt, c, info,
+    static void invoke( char const vect, integer_t const m, integer_t const n,
+            integer_t const kl, integer_t const ku, MatrixAB& ab, VectorD& d,
+            VectorE& e, MatrixQ& q, MatrixPT& pt, MatrixC& c, integer_t& info,
+            optimal_workspace work ) {
+        invoke( vect, m, n, kl, ku, ab, d, e, q, pt, c, info,
                 minimal_workspace() );
     }
 
@@ -167,17 +165,16 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename VectorD, typename VectorE,
             typename MatrixQ, typename MatrixPT, typename MatrixC,
             typename WORK, typename RWORK >
-    static void compute( char const vect, integer_t const m,
-            integer_t const n, integer_t const kl, integer_t const ku,
-            MatrixAB& ab, VectorD& d, VectorE& e, MatrixQ& q, MatrixPT& pt,
-            MatrixC& c, integer_t& info, detail::workspace2< WORK,
-            RWORK > work ) {
+    static void invoke( char const vect, integer_t const m, integer_t const n,
+            integer_t const kl, integer_t const ku, MatrixAB& ab, VectorD& d,
+            VectorE& e, MatrixQ& q, MatrixPT& pt, MatrixC& c, integer_t& info,
+            detail::workspace2< WORK, RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorD >::value_type, typename traits::vector_traits<
                 VectorE >::value_type >::value) );
@@ -217,24 +214,24 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename VectorD, typename VectorE,
             typename MatrixQ, typename MatrixPT, typename MatrixC >
-    static void compute( char const vect, integer_t const m,
-            integer_t const n, integer_t const kl, integer_t const ku,
-            MatrixAB& ab, VectorD& d, VectorE& e, MatrixQ& q, MatrixPT& pt,
-            MatrixC& c, integer_t& info, minimal_workspace work ) {
+    static void invoke( char const vect, integer_t const m, integer_t const n,
+            integer_t const kl, integer_t const ku, MatrixAB& ab, VectorD& d,
+            VectorE& e, MatrixQ& q, MatrixPT& pt, MatrixC& c, integer_t& info,
+            minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( m, n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( m, n ) );
-        compute( vect, m, n, kl, ku, ab, d, e, q, pt, c, info,
+        invoke( vect, m, n, kl, ku, ab, d, e, q, pt, c, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename VectorD, typename VectorE,
             typename MatrixQ, typename MatrixPT, typename MatrixC >
-    static void compute( char const vect, integer_t const m,
-            integer_t const n, integer_t const kl, integer_t const ku,
-            MatrixAB& ab, VectorD& d, VectorE& e, MatrixQ& q, MatrixPT& pt,
-            MatrixC& c, integer_t& info, optimal_workspace work ) {
-        compute( vect, m, n, kl, ku, ab, d, e, q, pt, c, info,
+    static void invoke( char const vect, integer_t const m, integer_t const n,
+            integer_t const kl, integer_t const ku, MatrixAB& ab, VectorD& d,
+            VectorE& e, MatrixQ& q, MatrixPT& pt, MatrixC& c, integer_t& info,
+            optimal_workspace work ) {
+        invoke( vect, m, n, kl, ku, ab, d, e, q, pt, c, info,
                 minimal_workspace() );
     }
 
@@ -258,7 +255,7 @@
         MatrixC& c, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    gbbrd_impl< value_type >::compute( vect, m, n, kl, ku, ab, d, e, q,
+    gbbrd_impl< value_type >::invoke( vect, m, n, kl, ku, ab, d, e, q,
             pt, c, info, work );
     return info;
 }
@@ -272,7 +269,7 @@
         MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    gbbrd_impl< value_type >::compute( vect, m, n, kl, ku, ab, d, e, q,
+    gbbrd_impl< value_type >::invoke( vect, m, n, kl, ku, ab, d, e, q,
             pt, c, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbcon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbcon.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GBCON_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -79,13 +77,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename VectorIPIV, typename WORK,
             typename IWORK >
-    static void compute( char const norm, integer_t const n,
+    static void invoke( char const norm, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             VectorIPIV& ipiv, real_type const anorm, real_type& rcond,
             integer_t& info, detail::workspace2< WORK, IWORK > work ) {
@@ -108,23 +105,23 @@
 
     // minimal workspace specialization
     template< typename MatrixAB, typename VectorIPIV >
-    static void compute( char const norm, integer_t const n,
+    static void invoke( char const norm, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             VectorIPIV& ipiv, real_type const anorm, real_type& rcond,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( norm, n, kl, ku, ab, ipiv, anorm, rcond, info,
+        invoke( norm, n, kl, ku, ab, ipiv, anorm, rcond, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename VectorIPIV >
-    static void compute( char const norm, integer_t const n,
+    static void invoke( char const norm, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             VectorIPIV& ipiv, real_type const anorm, real_type& rcond,
             integer_t& info, optimal_workspace work ) {
-        compute( norm, n, kl, ku, ab, ipiv, anorm, rcond, info,
+        invoke( norm, n, kl, ku, ab, ipiv, anorm, rcond, info,
                 minimal_workspace() );
     }
 
@@ -143,13 +140,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename VectorIPIV, typename WORK,
             typename RWORK >
-    static void compute( char const norm, integer_t const n,
+    static void invoke( char const norm, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             VectorIPIV& ipiv, real_type const anorm, real_type& rcond,
             integer_t& info, detail::workspace2< WORK, RWORK > work ) {
@@ -172,23 +168,23 @@
 
     // minimal workspace specialization
     template< typename MatrixAB, typename VectorIPIV >
-    static void compute( char const norm, integer_t const n,
+    static void invoke( char const norm, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             VectorIPIV& ipiv, real_type const anorm, real_type& rcond,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( norm, n, kl, ku, ab, ipiv, anorm, rcond, info,
+        invoke( norm, n, kl, ku, ab, ipiv, anorm, rcond, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename VectorIPIV >
-    static void compute( char const norm, integer_t const n,
+    static void invoke( char const norm, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             VectorIPIV& ipiv, real_type const anorm, real_type& rcond,
             integer_t& info, optimal_workspace work ) {
-        compute( norm, n, kl, ku, ab, ipiv, anorm, rcond, info,
+        invoke( norm, n, kl, ku, ab, ipiv, anorm, rcond, info,
                 minimal_workspace() );
     }
 
@@ -211,7 +207,7 @@
         MatrixAB >::value_type& rcond, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    gbcon_impl< value_type >::compute( norm, n, kl, ku, ab, ipiv, anorm,
+    gbcon_impl< value_type >::invoke( norm, n, kl, ku, ab, ipiv, anorm,
             rcond, info, work );
     return info;
 }
@@ -225,7 +221,7 @@
         MatrixAB >::value_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    gbcon_impl< value_type >::compute( norm, n, kl, ku, ab, ipiv, anorm,
+    gbcon_impl< value_type >::invoke( norm, n, kl, ku, ab, ipiv, anorm,
             rcond, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbequ.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbequ.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbequ.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GBEQU_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -75,11 +73,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAB, typename VectorR, typename VectorC >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab, VectorR& r,
             VectorC& c, real_type& rowcnd, real_type& colcnd, real_type& amax,
             integer_t& info ) {
@@ -106,11 +104,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAB, typename VectorR, typename VectorC >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab, VectorR& r,
             VectorC& c, real_type& rowcnd, real_type& colcnd, real_type& amax,
             integer_t& info ) {
@@ -139,7 +137,7 @@
         MatrixAB >::value_type& amax ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    gbequ_impl< value_type >::compute( m, n, kl, ku, ab, r, c, rowcnd,
+    gbequ_impl< value_type >::invoke( m, n, kl, ku, ab, r, c, rowcnd,
             colcnd, amax, info );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbrfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbrfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GBRFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -91,14 +89,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename IWORK >
-    static void compute( char const trans, integer_t const n,
+    static void invoke( char const trans, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             MatrixAFB& afb, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
@@ -149,14 +146,14 @@
     template< typename MatrixAB, typename MatrixAFB, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const trans, integer_t const n,
+    static void invoke( char const trans, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             MatrixAFB& afb, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( trans, n, kl, ku, ab, afb, ipiv, b, x, ferr, berr, info,
+        invoke( trans, n, kl, ku, ab, afb, ipiv, b, x, ferr, berr, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -164,12 +161,12 @@
     template< typename MatrixAB, typename MatrixAFB, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const trans, integer_t const n,
+    static void invoke( char const trans, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             MatrixAFB& afb, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( trans, n, kl, ku, ab, afb, ipiv, b, x, ferr, berr, info,
+        invoke( trans, n, kl, ku, ab, afb, ipiv, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -188,14 +185,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename RWORK >
-    static void compute( char const trans, integer_t const n,
+    static void invoke( char const trans, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             MatrixAFB& afb, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
@@ -243,14 +239,14 @@
     template< typename MatrixAB, typename MatrixAFB, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const trans, integer_t const n,
+    static void invoke( char const trans, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             MatrixAFB& afb, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( trans, n, kl, ku, ab, afb, ipiv, b, x, ferr, berr, info,
+        invoke( trans, n, kl, ku, ab, afb, ipiv, b, x, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -258,12 +254,12 @@
     template< typename MatrixAB, typename MatrixAFB, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const trans, integer_t const n,
+    static void invoke( char const trans, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             MatrixAFB& afb, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( trans, n, kl, ku, ab, afb, ipiv, b, x, ferr, berr, info,
+        invoke( trans, n, kl, ku, ab, afb, ipiv, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -287,8 +283,8 @@
         VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    gbrfs_impl< value_type >::compute( trans, n, kl, ku, ab, afb, ipiv,
-            b, x, ferr, berr, info, work );
+    gbrfs_impl< value_type >::invoke( trans, n, kl, ku, ab, afb, ipiv, b,
+            x, ferr, berr, info, work );
     return info;
 }
 
@@ -302,8 +298,8 @@
         VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    gbrfs_impl< value_type >::compute( trans, n, kl, ku, ab, afb, ipiv,
-            b, x, ferr, berr, info, optimal_workspace() );
+    gbrfs_impl< value_type >::invoke( trans, n, kl, ku, ab, afb, ipiv, b,
+            x, ferr, berr, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbtrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbtrf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbtrf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GBTRF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -62,12 +60,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAB, typename VectorIPIV >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             VectorIPIV& ipiv, integer_t& info ) {
         BOOST_ASSERT( m >= 0 );
@@ -90,7 +87,7 @@
         VectorIPIV& ipiv ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    gbtrf_impl< value_type >::compute( m, n, kl, ku, ab, ipiv, info );
+    gbtrf_impl< value_type >::invoke( m, n, kl, ku, ab, ipiv, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbtrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbtrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gbtrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GBTRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -68,12 +66,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAB, typename VectorIPIV, typename MatrixB >
-    static void compute( char const trans, integer_t const n,
+    static void invoke( char const trans, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             VectorIPIV& ipiv, MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -102,7 +99,7 @@
         VectorIPIV& ipiv, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    gbtrs_impl< value_type >::compute( trans, n, kl, ku, ab, ipiv, b,
+    gbtrs_impl< value_type >::invoke( trans, n, kl, ku, ab, ipiv, b,
             info );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebak.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebak.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebak.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GEBAK_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -75,11 +73,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename VectorSCALE, typename MatrixV >
-    static void compute( char const job, char const side, integer_t const ilo,
+    static void invoke( char const job, char const side, integer_t const ilo,
             integer_t const ihi, VectorSCALE& scale, MatrixV& v,
             integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -106,11 +104,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename VectorSCALE, typename MatrixV >
-    static void compute( char const job, char const side, integer_t const ilo,
+    static void invoke( char const job, char const side, integer_t const ilo,
             integer_t const ihi, VectorSCALE& scale, MatrixV& v,
             integer_t& info ) {
         BOOST_ASSERT( job == 'N' || job == 'P' || job == 'S' || job == 'B' );
@@ -137,7 +135,7 @@
     typedef typename traits::vector_traits<
             VectorSCALE >::value_type value_type;
     integer_t info(0);
-    gebak_impl< value_type >::compute( job, side, ilo, ihi, scale, v,
+    gebak_impl< value_type >::invoke( job, side, ilo, ihi, scale, v,
             info );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebal.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebal.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebal.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GEBAL_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -69,11 +67,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorSCALE >
-    static void compute( char const job, MatrixA& a, integer_t& ilo,
+    static void invoke( char const job, MatrixA& a, integer_t& ilo,
             integer_t& ihi, VectorSCALE& scale, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -94,11 +92,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorSCALE >
-    static void compute( char const job, MatrixA& a, integer_t& ilo,
+    static void invoke( char const job, MatrixA& a, integer_t& ilo,
             integer_t& ihi, VectorSCALE& scale, integer_t& info ) {
         BOOST_ASSERT( job == 'N' || job == 'P' || job == 'S' || job == 'B' );
         BOOST_ASSERT( traits::matrix_num_columns(a) >= 0 );
@@ -117,7 +115,7 @@
         integer_t& ihi, VectorSCALE& scale ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gebal_impl< value_type >::compute( job, a, ilo, ihi, scale, info );
+    gebal_impl< value_type >::invoke( job, a, ilo, ihi, scale, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebrd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gebrd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GEBRD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -79,12 +77,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAUQ, typename VectorTAUP, typename WORK >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
             VectorTAUP& taup, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -127,17 +125,17 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAUQ, typename VectorTAUP >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
             VectorTAUP& taup, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_rows(a), traits::matrix_num_columns(a) ) );
-        compute( a, d, e, tauq, taup, info, workspace( tmp_work ) );
+        invoke( a, d, e, tauq, taup, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAUQ, typename VectorTAUP >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
             VectorTAUP& taup, integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         detail::gebrd( traits::matrix_num_rows(a),
@@ -147,7 +145,7 @@
                 traits::vector_storage(taup), &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, d, e, tauq, taup, info, workspace( tmp_work ) );
+        invoke( a, d, e, tauq, taup, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n ) {
@@ -161,12 +159,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAUQ, typename VectorTAUP, typename WORK >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
             VectorTAUP& taup, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -206,17 +204,17 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAUQ, typename VectorTAUP >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
             VectorTAUP& taup, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_rows(a), traits::matrix_num_columns(a) ) );
-        compute( a, d, e, tauq, taup, info, workspace( tmp_work ) );
+        invoke( a, d, e, tauq, taup, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAUQ, typename VectorTAUP >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
             VectorTAUP& taup, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         detail::gebrd( traits::matrix_num_rows(a),
@@ -226,7 +224,7 @@
                 traits::vector_storage(taup), &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, d, e, tauq, taup, info, workspace( tmp_work ) );
+        invoke( a, d, e, tauq, taup, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n ) {
@@ -242,7 +240,7 @@
         VectorTAUQ& tauq, VectorTAUP& taup, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gebrd_impl< value_type >::compute( a, d, e, tauq, taup, info, work );
+    gebrd_impl< value_type >::invoke( a, d, e, tauq, taup, info, work );
     return info;
 }
 
@@ -253,7 +251,7 @@
         VectorTAUQ& tauq, VectorTAUP& taup ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gebrd_impl< value_type >::compute( a, d, e, tauq, taup, info,
+    gebrd_impl< value_type >::invoke( a, d, e, tauq, taup, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gecon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gecon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gecon.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GECON_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -75,11 +73,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename WORK, typename IWORK >
-    static void compute( char const norm, MatrixA& a, real_type const anorm,
+    static void invoke( char const norm, MatrixA& a, real_type const anorm,
             real_type& rcond, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
         BOOST_ASSERT( norm == '1' || norm == 'O' || norm == 'I' );
@@ -99,21 +97,21 @@
 
     // minimal workspace specialization
     template< typename MatrixA >
-    static void compute( char const norm, MatrixA& a, real_type const anorm,
+    static void invoke( char const norm, MatrixA& a, real_type const anorm,
             real_type& rcond, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( norm, a, anorm, rcond, info, workspace( tmp_work,
+        invoke( norm, a, anorm, rcond, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA >
-    static void compute( char const norm, MatrixA& a, real_type const anorm,
+    static void invoke( char const norm, MatrixA& a, real_type const anorm,
             real_type& rcond, integer_t& info, optimal_workspace work ) {
-        compute( norm, a, anorm, rcond, info, minimal_workspace() );
+        invoke( norm, a, anorm, rcond, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -131,11 +129,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename WORK, typename RWORK >
-    static void compute( char const norm, MatrixA& a, real_type const anorm,
+    static void invoke( char const norm, MatrixA& a, real_type const anorm,
             real_type& rcond, integer_t& info, detail::workspace2< WORK,
             RWORK > work ) {
         BOOST_ASSERT( norm == '1' || norm == 'O' || norm == 'I' );
@@ -155,21 +153,21 @@
 
     // minimal workspace specialization
     template< typename MatrixA >
-    static void compute( char const norm, MatrixA& a, real_type const anorm,
+    static void invoke( char const norm, MatrixA& a, real_type const anorm,
             real_type& rcond, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( norm, a, anorm, rcond, info, workspace( tmp_work,
+        invoke( norm, a, anorm, rcond, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA >
-    static void compute( char const norm, MatrixA& a, real_type const anorm,
+    static void invoke( char const norm, MatrixA& a, real_type const anorm,
             real_type& rcond, integer_t& info, optimal_workspace work ) {
-        compute( norm, a, anorm, rcond, info, minimal_workspace() );
+        invoke( norm, a, anorm, rcond, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -190,8 +188,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gecon_impl< value_type >::compute( norm, a, anorm, rcond, info,
-            work );
+    gecon_impl< value_type >::invoke( norm, a, anorm, rcond, info, work );
     return info;
 }
 
@@ -202,7 +199,7 @@
         typename traits::matrix_traits< MatrixA >::value_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gecon_impl< value_type >::compute( norm, a, anorm, rcond, info,
+    gecon_impl< value_type >::invoke( norm, a, anorm, rcond, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geequ.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geequ.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geequ.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GEEQU_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -69,13 +67,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorR, typename VectorC >
-    static void compute( MatrixA& a, VectorR& r, VectorC& c,
-            real_type& rowcnd, real_type& colcnd, real_type& amax,
-            integer_t& info ) {
+    static void invoke( MatrixA& a, VectorR& r, VectorC& c, real_type& rowcnd,
+            real_type& colcnd, real_type& amax, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
                 VectorR >::value_type >::value) );
@@ -99,13 +96,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorR, typename VectorC >
-    static void compute( MatrixA& a, VectorR& r, VectorC& c,
-            real_type& rowcnd, real_type& colcnd, real_type& amax,
-            integer_t& info ) {
+    static void invoke( MatrixA& a, VectorR& r, VectorC& c, real_type& rowcnd,
+            real_type& colcnd, real_type& amax, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorR >::value_type, typename traits::vector_traits<
                 VectorC >::value_type >::value) );
@@ -129,7 +125,7 @@
         typename traits::matrix_traits< MatrixA >::value_type& amax ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geequ_impl< value_type >::compute( a, r, c, rowcnd, colcnd, amax,
+    geequ_impl< value_type >::invoke( a, r, c, rowcnd, colcnd, amax,
             info );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gehrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gehrd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gehrd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GEHRD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -76,11 +74,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const ilo, integer_t const ihi, MatrixA& a,
+    static void invoke( integer_t const ilo, integer_t const ihi, MatrixA& a,
             VectorTAU& tau, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -102,16 +100,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const ilo, integer_t const ihi, MatrixA& a,
+    static void invoke( integer_t const ilo, integer_t const ihi, MatrixA& a,
             VectorTAU& tau, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( ilo, ihi, a, tau, info, workspace( tmp_work ) );
+        invoke( ilo, ihi, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const ilo, integer_t const ihi, MatrixA& a,
+    static void invoke( integer_t const ilo, integer_t const ihi, MatrixA& a,
             VectorTAU& tau, integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         detail::gehrd( traits::matrix_num_columns(a), ilo, ihi,
@@ -119,7 +117,7 @@
                 traits::vector_storage(tau), &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( ilo, ihi, a, tau, info, workspace( tmp_work ) );
+        invoke( ilo, ihi, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -133,11 +131,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const ilo, integer_t const ihi, MatrixA& a,
+    static void invoke( integer_t const ilo, integer_t const ihi, MatrixA& a,
             VectorTAU& tau, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -159,16 +157,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const ilo, integer_t const ihi, MatrixA& a,
+    static void invoke( integer_t const ilo, integer_t const ihi, MatrixA& a,
             VectorTAU& tau, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( ilo, ihi, a, tau, info, workspace( tmp_work ) );
+        invoke( ilo, ihi, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const ilo, integer_t const ihi, MatrixA& a,
+    static void invoke( integer_t const ilo, integer_t const ihi, MatrixA& a,
             VectorTAU& tau, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         detail::gehrd( traits::matrix_num_columns(a), ilo, ihi,
@@ -176,7 +174,7 @@
                 traits::vector_storage(tau), &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( ilo, ihi, a, tau, info, workspace( tmp_work ) );
+        invoke( ilo, ihi, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -191,7 +189,7 @@
         MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gehrd_impl< value_type >::compute( ilo, ihi, a, tau, info, work );
+    gehrd_impl< value_type >::invoke( ilo, ihi, a, tau, info, work );
     return info;
 }
 
@@ -201,7 +199,7 @@
         MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gehrd_impl< value_type >::compute( ilo, ihi, a, tau, info,
+    gehrd_impl< value_type >::invoke( ilo, ihi, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gelqf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gelqf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gelqf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GELQF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -74,11 +72,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -101,16 +99,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_rows(a) ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
         detail::gelqf( traits::matrix_num_rows(a),
@@ -119,7 +117,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m ) {
@@ -133,11 +131,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -160,16 +158,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_rows(a) ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
         detail::gelqf( traits::matrix_num_rows(a),
@@ -178,7 +176,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m ) {
@@ -192,7 +190,7 @@
 inline integer_t gelqf( MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gelqf_impl< value_type >::compute( a, tau, info, work );
+    gelqf_impl< value_type >::invoke( a, tau, info, work );
     return info;
 }
 
@@ -201,8 +199,7 @@
 inline integer_t gelqf( MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gelqf_impl< value_type >::compute( a, tau, info,
-            optimal_workspace() );
+    gelqf_impl< value_type >::invoke( a, tau, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geqlf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geqlf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geqlf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GEQLF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -74,11 +72,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -101,16 +99,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
         detail::geqlf( traits::matrix_num_rows(a),
@@ -119,7 +117,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -133,11 +131,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -160,16 +158,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
         detail::geqlf( traits::matrix_num_rows(a),
@@ -178,7 +176,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -192,7 +190,7 @@
 inline integer_t geqlf( MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geqlf_impl< value_type >::compute( a, tau, info, work );
+    geqlf_impl< value_type >::invoke( a, tau, info, work );
     return info;
 }
 
@@ -201,8 +199,7 @@
 inline integer_t geqlf( MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geqlf_impl< value_type >::compute( a, tau, info,
-            optimal_workspace() );
+    geqlf_impl< value_type >::invoke( a, tau, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geqp3.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geqp3.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geqp3.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GEQP3_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -76,12 +74,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorJPVT, typename VectorTAU,
             typename WORK >
-    static void compute( MatrixA& a, VectorJPVT& jpvt, VectorTAU& tau,
+    static void invoke( MatrixA& a, VectorJPVT& jpvt, VectorTAU& tau,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -105,16 +103,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorJPVT, typename VectorTAU >
-    static void compute( MatrixA& a, VectorJPVT& jpvt, VectorTAU& tau,
+    static void invoke( MatrixA& a, VectorJPVT& jpvt, VectorTAU& tau,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
-        compute( a, jpvt, tau, info, workspace( tmp_work ) );
+        invoke( a, jpvt, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorJPVT, typename VectorTAU >
-    static void compute( MatrixA& a, VectorJPVT& jpvt, VectorTAU& tau,
+    static void invoke( MatrixA& a, VectorJPVT& jpvt, VectorTAU& tau,
             integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         detail::geqp3( traits::matrix_num_rows(a),
@@ -123,7 +121,7 @@
                 traits::vector_storage(tau), &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, jpvt, tau, info, workspace( tmp_work ) );
+        invoke( a, jpvt, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -137,12 +135,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorJPVT, typename VectorTAU,
             typename WORK, typename RWORK >
-    static void compute( MatrixA& a, VectorJPVT& jpvt, VectorTAU& tau,
+    static void invoke( MatrixA& a, VectorJPVT& jpvt, VectorTAU& tau,
             integer_t& info, detail::workspace2< WORK, RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -169,18 +167,18 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorJPVT, typename VectorTAU >
-    static void compute( MatrixA& a, VectorJPVT& jpvt, VectorTAU& tau,
+    static void invoke( MatrixA& a, VectorJPVT& jpvt, VectorTAU& tau,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( a, jpvt, tau, info, workspace( tmp_work, tmp_rwork ) );
+        invoke( a, jpvt, tau, info, workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorJPVT, typename VectorTAU >
-    static void compute( MatrixA& a, VectorJPVT& jpvt, VectorTAU& tau,
+    static void invoke( MatrixA& a, VectorJPVT& jpvt, VectorTAU& tau,
             integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -192,7 +190,7 @@
                 traits::vector_storage(tmp_rwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, jpvt, tau, info, workspace( tmp_work, tmp_rwork ) );
+        invoke( a, jpvt, tau, info, workspace( tmp_work, tmp_rwork ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -212,7 +210,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geqp3_impl< value_type >::compute( a, jpvt, tau, info, work );
+    geqp3_impl< value_type >::invoke( a, jpvt, tau, info, work );
     return info;
 }
 
@@ -221,7 +219,7 @@
 inline integer_t geqp3( MatrixA& a, VectorJPVT& jpvt, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geqp3_impl< value_type >::compute( a, jpvt, tau, info,
+    geqp3_impl< value_type >::invoke( a, jpvt, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geqrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geqrf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/geqrf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GEQRF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -74,11 +72,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -101,16 +99,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
         detail::geqrf( traits::matrix_num_rows(a),
@@ -119,7 +117,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -133,11 +131,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -160,16 +158,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
         detail::geqrf( traits::matrix_num_rows(a),
@@ -178,7 +176,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -192,7 +190,7 @@
 inline integer_t geqrf( MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geqrf_impl< value_type >::compute( a, tau, info, work );
+    geqrf_impl< value_type >::invoke( a, tau, info, work );
     return info;
 }
 
@@ -201,8 +199,7 @@
 inline integer_t geqrf( MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geqrf_impl< value_type >::compute( a, tau, info,
-            optimal_workspace() );
+    geqrf_impl< value_type >::invoke( a, tau, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GERFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -87,14 +85,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename IWORK >
-    static void compute( char const trans, MatrixA& a, MatrixAF& af,
+    static void invoke( char const trans, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
@@ -147,14 +144,14 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const trans, MatrixA& a, MatrixAF& af,
+    static void invoke( char const trans, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( trans, a, af, ipiv, b, x, ferr, berr, info,
+        invoke( trans, a, af, ipiv, b, x, ferr, berr, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -162,10 +159,10 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const trans, MatrixA& a, MatrixAF& af,
+    static void invoke( char const trans, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, optimal_workspace work ) {
-        compute( trans, a, af, ipiv, b, x, ferr, berr, info,
+        invoke( trans, a, af, ipiv, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -184,14 +181,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename RWORK >
-    static void compute( char const trans, MatrixA& a, MatrixAF& af,
+    static void invoke( char const trans, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, detail::workspace2< WORK,
             RWORK > work ) {
@@ -241,14 +237,14 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const trans, MatrixA& a, MatrixAF& af,
+    static void invoke( char const trans, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( trans, a, af, ipiv, b, x, ferr, berr, info,
+        invoke( trans, a, af, ipiv, b, x, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -256,10 +252,10 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const trans, MatrixA& a, MatrixAF& af,
+    static void invoke( char const trans, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, optimal_workspace work ) {
-        compute( trans, a, af, ipiv, b, x, ferr, berr, info,
+        invoke( trans, a, af, ipiv, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -282,7 +278,7 @@
         VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gerfs_impl< value_type >::compute( trans, a, af, ipiv, b, x, ferr,
+    gerfs_impl< value_type >::invoke( trans, a, af, ipiv, b, x, ferr,
             berr, info, work );
     return info;
 }
@@ -296,7 +292,7 @@
         VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gerfs_impl< value_type >::compute( trans, a, af, ipiv, b, x, ferr,
+    gerfs_impl< value_type >::invoke( trans, a, af, ipiv, b, x, ferr,
             berr, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerqf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerqf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gerqf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GERQF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -74,11 +72,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -101,16 +99,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
         detail::gerqf( traits::matrix_num_rows(a),
@@ -119,7 +117,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -133,11 +131,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -160,16 +158,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
         detail::gerqf( traits::matrix_num_rows(a),
@@ -178,7 +176,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -192,7 +190,7 @@
 inline integer_t gerqf( MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gerqf_impl< value_type >::compute( a, tau, info, work );
+    gerqf_impl< value_type >::invoke( a, tau, info, work );
     return info;
 }
 
@@ -201,8 +199,7 @@
 inline integer_t gerqf( MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gerqf_impl< value_type >::compute( a, tau, info,
-            optimal_workspace() );
+    gerqf_impl< value_type >::invoke( a, tau, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getrf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getrf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GETRF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -58,12 +56,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info ) {
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info ) {
         BOOST_ASSERT( traits::matrix_num_rows(a) >= 0 );
         BOOST_ASSERT( traits::matrix_num_columns(a) >= 0 );
         BOOST_ASSERT( traits::leading_dimension(a) >= std::max(1,
@@ -84,7 +81,7 @@
 inline integer_t getrf( MatrixA& a, VectorIPIV& ipiv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    getrf_impl< value_type >::compute( a, ipiv, info );
+    getrf_impl< value_type >::invoke( a, ipiv, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getri.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getri.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GETRI_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -72,12 +70,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename WORK >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_ASSERT( traits::matrix_num_columns(a) >= 0 );
         BOOST_ASSERT( traits::leading_dimension(a) >= std::max(1,
@@ -95,16 +92,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
-        compute( a, ipiv, info, workspace( tmp_work ) );
+        invoke( a, ipiv, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
         detail::getri( traits::matrix_num_columns(a),
@@ -112,7 +109,7 @@
                 traits::vector_storage(ipiv), &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, ipiv, info, workspace( tmp_work ) );
+        invoke( a, ipiv, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -126,12 +123,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename WORK >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_ASSERT( traits::matrix_num_columns(a) >= 0 );
         BOOST_ASSERT( traits::leading_dimension(a) >= std::max(1,
@@ -149,16 +145,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
-        compute( a, ipiv, info, workspace( tmp_work ) );
+        invoke( a, ipiv, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
         detail::getri( traits::matrix_num_columns(a),
@@ -166,7 +162,7 @@
                 traits::vector_storage(ipiv), &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, ipiv, info, workspace( tmp_work ) );
+        invoke( a, ipiv, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -180,7 +176,7 @@
 inline integer_t getri( MatrixA& a, VectorIPIV& ipiv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    getri_impl< value_type >::compute( a, ipiv, info, work );
+    getri_impl< value_type >::invoke( a, ipiv, info, work );
     return info;
 }
 
@@ -189,7 +185,7 @@
 inline integer_t getri( MatrixA& a, VectorIPIV& ipiv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    getri_impl< value_type >::compute( a, ipiv, info,
+    getri_impl< value_type >::invoke( a, ipiv, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/getrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GETRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -65,12 +63,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB >
-    static void compute( char const trans, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const trans, MatrixA& a, VectorIPIV& ipiv,
             MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -99,7 +96,7 @@
         MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    getrs_impl< value_type >::compute( trans, a, ipiv, b, info );
+    getrs_impl< value_type >::invoke( trans, a, ipiv, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbak.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbak.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbak.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GGBAK_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -75,11 +73,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename VectorLSCALE, typename VectorRSCALE, typename MatrixV >
-    static void compute( char const job, char const side, integer_t const ilo,
+    static void invoke( char const job, char const side, integer_t const ilo,
             integer_t const ihi, VectorLSCALE& lscale, VectorRSCALE& rscale,
             MatrixV& v, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -112,11 +110,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename VectorLSCALE, typename VectorRSCALE, typename MatrixV >
-    static void compute( char const job, char const side, integer_t const ilo,
+    static void invoke( char const job, char const side, integer_t const ilo,
             integer_t const ihi, VectorLSCALE& lscale, VectorRSCALE& rscale,
             MatrixV& v, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -149,7 +147,7 @@
     typedef typename traits::vector_traits<
             VectorLSCALE >::value_type value_type;
     integer_t info(0);
-    ggbak_impl< value_type >::compute( job, side, ilo, ihi, lscale,
+    ggbak_impl< value_type >::invoke( job, side, ilo, ihi, lscale,
             rscale, v, info );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbal.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbal.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggbal.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GGBAL_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -79,13 +77,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorLSCALE,
             typename VectorRSCALE, typename WORK >
-    static void compute( char const job, integer_t const n, MatrixA& a,
+    static void invoke( char const job, integer_t const n, MatrixA& a,
             MatrixB& b, integer_t& ilo, integer_t& ihi, VectorLSCALE& lscale,
             VectorRSCALE& rscale, integer_t& info, detail::workspace1<
             WORK > work ) {
@@ -115,22 +112,22 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorLSCALE,
             typename VectorRSCALE >
-    static void compute( char const job, integer_t const n, MatrixA& a,
+    static void invoke( char const job, integer_t const n, MatrixA& a,
             MatrixB& b, integer_t& ilo, integer_t& ihi, VectorLSCALE& lscale,
             VectorRSCALE& rscale, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( job, n, a, b, ilo, ihi, lscale, rscale, info,
+        invoke( job, n, a, b, ilo, ihi, lscale, rscale, info,
                 workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorLSCALE,
             typename VectorRSCALE >
-    static void compute( char const job, integer_t const n, MatrixA& a,
+    static void invoke( char const job, integer_t const n, MatrixA& a,
             MatrixB& b, integer_t& ilo, integer_t& ihi, VectorLSCALE& lscale,
             VectorRSCALE& rscale, integer_t& info, optimal_workspace work ) {
-        compute( job, n, a, b, ilo, ihi, lscale, rscale, info,
+        invoke( job, n, a, b, ilo, ihi, lscale, rscale, info,
                 minimal_workspace() );
     }
 
@@ -145,13 +142,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorLSCALE,
             typename VectorRSCALE, typename WORK >
-    static void compute( char const job, integer_t const n, MatrixA& a,
+    static void invoke( char const job, integer_t const n, MatrixA& a,
             MatrixB& b, integer_t& ilo, integer_t& ihi, VectorLSCALE& lscale,
             VectorRSCALE& rscale, integer_t& info, detail::workspace1<
             WORK > work ) {
@@ -178,22 +174,22 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorLSCALE,
             typename VectorRSCALE >
-    static void compute( char const job, integer_t const n, MatrixA& a,
+    static void invoke( char const job, integer_t const n, MatrixA& a,
             MatrixB& b, integer_t& ilo, integer_t& ihi, VectorLSCALE& lscale,
             VectorRSCALE& rscale, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( job, n, a, b, ilo, ihi, lscale, rscale, info,
+        invoke( job, n, a, b, ilo, ihi, lscale, rscale, info,
                 workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorLSCALE,
             typename VectorRSCALE >
-    static void compute( char const job, integer_t const n, MatrixA& a,
+    static void invoke( char const job, integer_t const n, MatrixA& a,
             MatrixB& b, integer_t& ilo, integer_t& ihi, VectorLSCALE& lscale,
             VectorRSCALE& rscale, integer_t& info, optimal_workspace work ) {
-        compute( job, n, a, b, ilo, ihi, lscale, rscale, info,
+        invoke( job, n, a, b, ilo, ihi, lscale, rscale, info,
                 minimal_workspace() );
     }
 
@@ -211,7 +207,7 @@
         VectorRSCALE& rscale, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggbal_impl< value_type >::compute( job, n, a, b, ilo, ihi, lscale,
+    ggbal_impl< value_type >::invoke( job, n, a, b, ilo, ihi, lscale,
             rscale, info, work );
     return info;
 }
@@ -224,7 +220,7 @@
         VectorRSCALE& rscale ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggbal_impl< value_type >::compute( job, n, a, b, ilo, ihi, lscale,
+    ggbal_impl< value_type >::invoke( job, n, a, b, ilo, ihi, lscale,
             rscale, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gghrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gghrd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gghrd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GGHRD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -74,15 +72,14 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename MatrixB, typename MatrixQ,
             typename MatrixZ >
-    static void compute( char const compq, char const compz,
-            integer_t const n, integer_t const ilo, MatrixA& a, MatrixB& b,
-            MatrixQ& q, MatrixZ& z, integer_t& info ) {
+    static void invoke( char const compq, char const compz, integer_t const n,
+            integer_t const ilo, MatrixA& a, MatrixB& b, MatrixQ& q,
+            MatrixZ& z, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
                 MatrixB >::value_type >::value) );
@@ -115,7 +112,7 @@
         MatrixQ& q, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gghrd_impl< value_type >::compute( compq, compz, n, ilo, a, b, q, z,
+    gghrd_impl< value_type >::invoke( compq, compz, n, ilo, a, b, q, z,
             info );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggqrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggqrf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggqrf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GGQRF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -84,13 +82,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAUA, typename MatrixB,
             typename VectorTAUB, typename WORK >
-    static void compute( MatrixA& a, VectorTAUA& taua, MatrixB& b,
+    static void invoke( MatrixA& a, VectorTAUA& taua, MatrixB& b,
             VectorTAUB& taub, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -129,17 +126,17 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAUA, typename MatrixB,
             typename VectorTAUB >
-    static void compute( MatrixA& a, VectorTAUA& taua, MatrixB& b,
+    static void invoke( MatrixA& a, VectorTAUA& taua, MatrixB& b,
             VectorTAUB& taub, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( a, taua, b, taub, info, workspace( tmp_work ) );
+        invoke( a, taua, b, taub, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAUA, typename MatrixB,
             typename VectorTAUB >
-    static void compute( MatrixA& a, VectorTAUA& taua, MatrixB& b,
+    static void invoke( MatrixA& a, VectorTAUA& taua, MatrixB& b,
             VectorTAUB& taub, integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         detail::ggqrf( traits::matrix_num_rows(b),
@@ -150,7 +147,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, taua, b, taub, info, workspace( tmp_work ) );
+        invoke( a, taua, b, taub, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -164,13 +161,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAUA, typename MatrixB,
             typename VectorTAUB, typename WORK >
-    static void compute( MatrixA& a, VectorTAUA& taua, MatrixB& b,
+    static void invoke( MatrixA& a, VectorTAUA& taua, MatrixB& b,
             VectorTAUB& taub, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -209,17 +205,17 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAUA, typename MatrixB,
             typename VectorTAUB >
-    static void compute( MatrixA& a, VectorTAUA& taua, MatrixB& b,
+    static void invoke( MatrixA& a, VectorTAUA& taua, MatrixB& b,
             VectorTAUB& taub, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( a, taua, b, taub, info, workspace( tmp_work ) );
+        invoke( a, taua, b, taub, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAUA, typename MatrixB,
             typename VectorTAUB >
-    static void compute( MatrixA& a, VectorTAUA& taua, MatrixB& b,
+    static void invoke( MatrixA& a, VectorTAUA& taua, MatrixB& b,
             VectorTAUB& taub, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         detail::ggqrf( traits::matrix_num_rows(b),
@@ -230,7 +226,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, taua, b, taub, info, workspace( tmp_work ) );
+        invoke( a, taua, b, taub, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -246,7 +242,7 @@
         VectorTAUB& taub, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggqrf_impl< value_type >::compute( a, taua, b, taub, info, work );
+    ggqrf_impl< value_type >::invoke( a, taua, b, taub, info, work );
     return info;
 }
 
@@ -257,7 +253,7 @@
         VectorTAUB& taub ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggqrf_impl< value_type >::compute( a, taua, b, taub, info,
+    ggqrf_impl< value_type >::invoke( a, taua, b, taub, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggrqf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggrqf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggrqf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GGRQF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -84,13 +82,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAUA, typename MatrixB,
             typename VectorTAUB, typename WORK >
-    static void compute( MatrixA& a, VectorTAUA& taua, MatrixB& b,
+    static void invoke( MatrixA& a, VectorTAUA& taua, MatrixB& b,
             VectorTAUB& taub, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -129,17 +126,17 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAUA, typename MatrixB,
             typename VectorTAUB >
-    static void compute( MatrixA& a, VectorTAUA& taua, MatrixB& b,
+    static void invoke( MatrixA& a, VectorTAUA& taua, MatrixB& b,
             VectorTAUB& taub, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( a, taua, b, taub, info, workspace( tmp_work ) );
+        invoke( a, taua, b, taub, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAUA, typename MatrixB,
             typename VectorTAUB >
-    static void compute( MatrixA& a, VectorTAUA& taua, MatrixB& b,
+    static void invoke( MatrixA& a, VectorTAUA& taua, MatrixB& b,
             VectorTAUB& taub, integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         detail::ggrqf( traits::matrix_num_rows(a),
@@ -150,7 +147,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, taua, b, taub, info, workspace( tmp_work ) );
+        invoke( a, taua, b, taub, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -164,13 +161,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAUA, typename MatrixB,
             typename VectorTAUB, typename WORK >
-    static void compute( MatrixA& a, VectorTAUA& taua, MatrixB& b,
+    static void invoke( MatrixA& a, VectorTAUA& taua, MatrixB& b,
             VectorTAUB& taub, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -209,17 +205,17 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAUA, typename MatrixB,
             typename VectorTAUB >
-    static void compute( MatrixA& a, VectorTAUA& taua, MatrixB& b,
+    static void invoke( MatrixA& a, VectorTAUA& taua, MatrixB& b,
             VectorTAUB& taub, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( a, taua, b, taub, info, workspace( tmp_work ) );
+        invoke( a, taua, b, taub, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAUA, typename MatrixB,
             typename VectorTAUB >
-    static void compute( MatrixA& a, VectorTAUA& taua, MatrixB& b,
+    static void invoke( MatrixA& a, VectorTAUA& taua, MatrixB& b,
             VectorTAUB& taub, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         detail::ggrqf( traits::matrix_num_rows(a),
@@ -230,7 +226,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, taua, b, taub, info, workspace( tmp_work ) );
+        invoke( a, taua, b, taub, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -246,7 +242,7 @@
         VectorTAUB& taub, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggrqf_impl< value_type >::compute( a, taua, b, taub, info, work );
+    ggrqf_impl< value_type >::invoke( a, taua, b, taub, info, work );
     return info;
 }
 
@@ -257,7 +253,7 @@
         VectorTAUB& taub ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggrqf_impl< value_type >::compute( a, taua, b, taub, info,
+    ggrqf_impl< value_type >::invoke( a, taua, b, taub, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggsvp.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggsvp.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ggsvp.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GGSVP_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -103,14 +101,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixU,
             typename MatrixV, typename MatrixQ, typename IWORK, typename TAU,
             typename WORK >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             MatrixA& a, MatrixB& b, real_type const tola,
             real_type const tolb, integer_t& k, integer_t& l, MatrixU& u,
             MatrixV& v, MatrixQ& q, integer_t& info, detail::workspace3<
@@ -160,7 +157,7 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixU,
             typename MatrixV, typename MatrixQ >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             MatrixA& a, MatrixB& b, real_type const tola,
             real_type const tolb, integer_t& k, integer_t& l, MatrixU& u,
             MatrixV& v, MatrixQ& q, integer_t& info, minimal_workspace work ) {
@@ -171,18 +168,18 @@
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(b), traits::matrix_num_rows(a),
                 traits::matrix_num_rows(b) ) );
-        compute( jobu, jobv, jobq, a, b, tola, tolb, k, l, u, v, q, info,
+        invoke( jobu, jobv, jobq, a, b, tola, tolb, k, l, u, v, q, info,
                 workspace( tmp_iwork, tmp_tau, tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixU,
             typename MatrixV, typename MatrixQ >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             MatrixA& a, MatrixB& b, real_type const tola,
             real_type const tolb, integer_t& k, integer_t& l, MatrixU& u,
             MatrixV& v, MatrixQ& q, integer_t& info, optimal_workspace work ) {
-        compute( jobu, jobv, jobq, a, b, tola, tolb, k, l, u, v, q, info,
+        invoke( jobu, jobv, jobq, a, b, tola, tolb, k, l, u, v, q, info,
                 minimal_workspace() );
     }
 
@@ -206,14 +203,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixU,
             typename MatrixV, typename MatrixQ, typename IWORK,
             typename RWORK, typename TAU, typename WORK >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             MatrixA& a, MatrixB& b, real_type const tola,
             real_type const tolb, integer_t& k, integer_t& l, MatrixU& u,
             MatrixV& v, MatrixQ& q, integer_t& info, detail::workspace4<
@@ -266,7 +262,7 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixU,
             typename MatrixV, typename MatrixQ >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             MatrixA& a, MatrixB& b, real_type const tola,
             real_type const tolb, integer_t& k, integer_t& l, MatrixU& u,
             MatrixV& v, MatrixQ& q, integer_t& info, minimal_workspace work ) {
@@ -279,18 +275,18 @@
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(b), traits::matrix_num_rows(a),
                 traits::matrix_num_rows(b) ) );
-        compute( jobu, jobv, jobq, a, b, tola, tolb, k, l, u, v, q, info,
+        invoke( jobu, jobv, jobq, a, b, tola, tolb, k, l, u, v, q, info,
                 workspace( tmp_iwork, tmp_rwork, tmp_tau, tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixU,
             typename MatrixV, typename MatrixQ >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             MatrixA& a, MatrixB& b, real_type const tola,
             real_type const tolb, integer_t& k, integer_t& l, MatrixU& u,
             MatrixV& v, MatrixQ& q, integer_t& info, optimal_workspace work ) {
-        compute( jobu, jobv, jobq, a, b, tola, tolb, k, l, u, v, q, info,
+        invoke( jobu, jobv, jobq, a, b, tola, tolb, k, l, u, v, q, info,
                 minimal_workspace() );
     }
 
@@ -324,8 +320,8 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggsvp_impl< value_type >::compute( jobu, jobv, jobq, a, b, tola,
-            tolb, k, l, u, v, q, info, work );
+    ggsvp_impl< value_type >::invoke( jobu, jobv, jobq, a, b, tola, tolb,
+            k, l, u, v, q, info, work );
     return info;
 }
 
@@ -339,8 +335,8 @@
         integer_t& k, integer_t& l, MatrixU& u, MatrixV& v, MatrixQ& q ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggsvp_impl< value_type >::compute( jobu, jobv, jobq, a, b, tola,
-            tolb, k, l, u, v, q, info, optimal_workspace() );
+    ggsvp_impl< value_type >::invoke( jobu, jobv, jobq, a, b, tola, tolb,
+            k, l, u, v, q, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gtrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gtrfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gtrfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GTRFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -96,16 +94,15 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorDL, typename VectorD, typename VectorDU,
             typename VectorDLF, typename VectorDF, typename VectorDUF,
             typename VectorDU2, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename IWORK >
-    static void compute( char const trans, integer_t const n, VectorDL& dl,
+    static void invoke( char const trans, integer_t const n, VectorDL& dl,
             VectorD& d, VectorDU& du, VectorDLF& dlf, VectorDF& df,
             VectorDUF& duf, VectorDU2& du2, VectorIPIV& ipiv, MatrixB& b,
             MatrixX& x, VectorFERR& ferr, VectorBERR& berr, integer_t& info,
@@ -176,14 +173,14 @@
             typename VectorDLF, typename VectorDF, typename VectorDUF,
             typename VectorDU2, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const trans, integer_t const n, VectorDL& dl,
+    static void invoke( char const trans, integer_t const n, VectorDL& dl,
             VectorD& d, VectorDU& du, VectorDLF& dlf, VectorDF& df,
             VectorDUF& duf, VectorDU2& du2, VectorIPIV& ipiv, MatrixB& b,
             MatrixX& x, VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x, ferr,
+        invoke( trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x, ferr,
                 berr, info, workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -192,12 +189,12 @@
             typename VectorDLF, typename VectorDF, typename VectorDUF,
             typename VectorDU2, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const trans, integer_t const n, VectorDL& dl,
+    static void invoke( char const trans, integer_t const n, VectorDL& dl,
             VectorD& d, VectorDU& du, VectorDLF& dlf, VectorDF& df,
             VectorDUF& duf, VectorDU2& du2, VectorIPIV& ipiv, MatrixB& b,
             MatrixX& x, VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x, ferr,
+        invoke( trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x, ferr,
                 berr, info, minimal_workspace() );
     }
 
@@ -216,16 +213,15 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorDL, typename VectorD, typename VectorDU,
             typename VectorDLF, typename VectorDF, typename VectorDUF,
             typename VectorDU2, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename RWORK >
-    static void compute( char const trans, integer_t const n, VectorDL& dl,
+    static void invoke( char const trans, integer_t const n, VectorDL& dl,
             VectorD& d, VectorDU& du, VectorDLF& dlf, VectorDF& df,
             VectorDUF& duf, VectorDU2& du2, VectorIPIV& ipiv, MatrixB& b,
             MatrixX& x, VectorFERR& ferr, VectorBERR& berr, integer_t& info,
@@ -293,14 +289,14 @@
             typename VectorDLF, typename VectorDF, typename VectorDUF,
             typename VectorDU2, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const trans, integer_t const n, VectorDL& dl,
+    static void invoke( char const trans, integer_t const n, VectorDL& dl,
             VectorD& d, VectorDU& du, VectorDLF& dlf, VectorDF& df,
             VectorDUF& duf, VectorDU2& du2, VectorIPIV& ipiv, MatrixB& b,
             MatrixX& x, VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x, ferr,
+        invoke( trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x, ferr,
                 berr, info, workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -309,12 +305,12 @@
             typename VectorDLF, typename VectorDF, typename VectorDUF,
             typename VectorDU2, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const trans, integer_t const n, VectorDL& dl,
+    static void invoke( char const trans, integer_t const n, VectorDL& dl,
             VectorD& d, VectorDU& du, VectorDLF& dlf, VectorDF& df,
             VectorDUF& duf, VectorDU2& du2, VectorIPIV& ipiv, MatrixB& b,
             MatrixX& x, VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x, ferr,
+        invoke( trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x, ferr,
                 berr, info, minimal_workspace() );
     }
 
@@ -340,7 +336,7 @@
         MatrixX& x, VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::vector_traits< VectorDL >::value_type value_type;
     integer_t info(0);
-    gtrfs_impl< value_type >::compute( trans, n, dl, d, du, dlf, df, duf,
+    gtrfs_impl< value_type >::invoke( trans, n, dl, d, du, dlf, df, duf,
             du2, ipiv, b, x, ferr, berr, info, work );
     return info;
 }
@@ -356,7 +352,7 @@
         MatrixX& x, VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::vector_traits< VectorDL >::value_type value_type;
     integer_t info(0);
-    gtrfs_impl< value_type >::compute( trans, n, dl, d, du, dlf, df, duf,
+    gtrfs_impl< value_type >::invoke( trans, n, dl, d, du, dlf, df, duf,
             du2, ipiv, b, x, ferr, berr, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gttrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gttrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/gttrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_GTTRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -71,13 +69,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename VectorDL, typename VectorD, typename VectorDU,
             typename VectorDU2, typename VectorIPIV, typename MatrixB >
-    static void compute( char const trans, integer_t const n, VectorDL& dl,
+    static void invoke( char const trans, integer_t const n, VectorDL& dl,
             VectorD& d, VectorDU& du, VectorDU2& du2, VectorIPIV& ipiv,
             MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -117,7 +114,7 @@
         VectorIPIV& ipiv, MatrixB& b ) {
     typedef typename traits::vector_traits< VectorDL >::value_type value_type;
     integer_t info(0);
-    gttrs_impl< value_type >::compute( trans, n, dl, d, du, du2, ipiv, b,
+    gttrs_impl< value_type >::invoke( trans, n, dl, d, du, du2, ipiv, b,
             info );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbgst.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbgst.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbgst.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HBGST_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -60,12 +58,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename MatrixX,
             typename WORK, typename RWORK >
-    static void compute( char const vect, integer_t const n,
+    static void invoke( char const vect, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, MatrixX& x, integer_t& info, detail::workspace2<
             WORK, RWORK > work ) {
@@ -97,23 +95,23 @@
 
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename MatrixX >
-    static void compute( char const vect, integer_t const n,
+    static void invoke( char const vect, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, MatrixX& x, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( vect, n, ka, kb, ab, bb, x, info, workspace( tmp_work,
+        invoke( vect, n, ka, kb, ab, bb, x, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename MatrixX >
-    static void compute( char const vect, integer_t const n,
+    static void invoke( char const vect, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, MatrixX& x, integer_t& info,
             optimal_workspace work ) {
-        compute( vect, n, ka, kb, ab, bb, x, info, minimal_workspace() );
+        invoke( vect, n, ka, kb, ab, bb, x, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -134,7 +132,7 @@
         MatrixX& x, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbgst_impl< value_type >::compute( vect, n, ka, kb, ab, bb, x, info,
+    hbgst_impl< value_type >::invoke( vect, n, ka, kb, ab, bb, x, info,
             work );
     return info;
 }
@@ -146,7 +144,7 @@
         MatrixX& x ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbgst_impl< value_type >::compute( vect, n, ka, kb, ab, bb, x, info,
+    hbgst_impl< value_type >::invoke( vect, n, ka, kb, ab, bb, x, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbtrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbtrd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hbtrd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HBTRD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -58,12 +56,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename VectorD, typename VectorE,
             typename MatrixQ, typename WORK >
-    static void compute( char const vect, integer_t const n,
+    static void invoke( char const vect, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorD& d, VectorE& e,
             MatrixQ& q, integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -91,20 +89,20 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename VectorD, typename VectorE,
             typename MatrixQ >
-    static void compute( char const vect, integer_t const n,
+    static void invoke( char const vect, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorD& d, VectorE& e,
             MatrixQ& q, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
-        compute( vect, n, kd, ab, d, e, q, info, workspace( tmp_work ) );
+        invoke( vect, n, kd, ab, d, e, q, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename VectorD, typename VectorE,
             typename MatrixQ >
-    static void compute( char const vect, integer_t const n,
+    static void invoke( char const vect, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorD& d, VectorE& e,
             MatrixQ& q, integer_t& info, optimal_workspace work ) {
-        compute( vect, n, kd, ab, d, e, q, info, minimal_workspace() );
+        invoke( vect, n, kd, ab, d, e, q, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -121,7 +119,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbtrd_impl< value_type >::compute( vect, n, kd, ab, d, e, q, info,
+    hbtrd_impl< value_type >::invoke( vect, n, kd, ab, d, e, q, info,
             work );
     return info;
 }
@@ -134,7 +132,7 @@
         MatrixQ& q ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbtrd_impl< value_type >::compute( vect, n, kd, ab, d, e, q, info,
+    hbtrd_impl< value_type >::invoke( vect, n, kd, ab, d, e, q, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hecon.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HECON_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -56,12 +54,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename WORK >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             real_type const anorm, real_type& rcond, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_ASSERT( uplo == 'U' || uplo == 'L' );
@@ -80,20 +77,20 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             real_type const anorm, real_type& rcond, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
-        compute( uplo, a, ipiv, anorm, rcond, info, workspace( tmp_work ) );
+        invoke( uplo, a, ipiv, anorm, rcond, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             real_type const anorm, real_type& rcond, integer_t& info,
             optimal_workspace work ) {
-        compute( uplo, a, ipiv, anorm, rcond, info, minimal_workspace() );
+        invoke( uplo, a, ipiv, anorm, rcond, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -110,7 +107,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hecon_impl< value_type >::compute( uplo, a, ipiv, anorm, rcond, info,
+    hecon_impl< value_type >::invoke( uplo, a, ipiv, anorm, rcond, info,
             work );
     return info;
 }
@@ -122,7 +119,7 @@
         typename traits::matrix_traits< MatrixA >::value_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hecon_impl< value_type >::compute( uplo, a, ipiv, anorm, rcond, info,
+    hecon_impl< value_type >::invoke( uplo, a, ipiv, anorm, rcond, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hegst.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hegst.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hegst.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HEGST_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -52,12 +50,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename MatrixB >
-    static void compute( integer_t const itype, integer_t const n, MatrixA& a,
+    static void invoke( integer_t const itype, integer_t const n, MatrixA& a,
             MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -81,7 +78,7 @@
         MatrixA& a, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hegst_impl< value_type >::compute( itype, n, a, b, info );
+    hegst_impl< value_type >::invoke( itype, n, a, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/herfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/herfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/herfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HERFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -64,14 +62,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename RWORK >
-    static void compute( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
+    static void invoke( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, detail::workspace2< WORK, RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -122,14 +119,14 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
+    static void invoke( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( a, af, ipiv, b, x, ferr, berr, info, workspace( tmp_work,
+        invoke( a, af, ipiv, b, x, ferr, berr, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
@@ -137,10 +134,10 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
+    static void invoke( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, optimal_workspace work ) {
-        compute( a, af, ipiv, b, x, ferr, berr, info, minimal_workspace() );
+        invoke( a, af, ipiv, b, x, ferr, berr, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -162,7 +159,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    herfs_impl< value_type >::compute( a, af, ipiv, b, x, ferr, berr,
+    herfs_impl< value_type >::invoke( a, af, ipiv, b, x, ferr, berr,
             info, work );
     return info;
 }
@@ -175,7 +172,7 @@
         MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    herfs_impl< value_type >::compute( a, af, ipiv, b, x, ferr, berr,
+    herfs_impl< value_type >::invoke( a, af, ipiv, b, x, ferr, berr,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HETRD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -59,12 +57,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAU& tau,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAU& tau,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorD >::value_type, typename traits::vector_traits<
@@ -94,16 +92,16 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAU >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAU& tau,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAU& tau,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(  ) );
-        compute( a, d, e, tau, info, workspace( tmp_work ) );
+        invoke( a, d, e, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAU >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAU& tau,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAU& tau,
             integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         detail::hetrd( traits::matrix_uplo_tag(a),
@@ -113,7 +111,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, d, e, tau, info, workspace( tmp_work ) );
+        invoke( a, d, e, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work(  ) {
@@ -129,7 +127,7 @@
         VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hetrd_impl< value_type >::compute( a, d, e, tau, info, work );
+    hetrd_impl< value_type >::invoke( a, d, e, tau, info, work );
     return info;
 }
 
@@ -140,7 +138,7 @@
         VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hetrd_impl< value_type >::compute( a, d, e, tau, info,
+    hetrd_impl< value_type >::invoke( a, d, e, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HETRF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -54,12 +52,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename WORK >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
                 traits::matrix_uplo_tag(a) == 'L' );
@@ -77,17 +74,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(  ) );
-        compute( a, ipiv, info, workspace( tmp_work ) );
+        invoke( a, ipiv, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             optimal_workspace work ) {
-        compute( a, ipiv, info, minimal_workspace() );
+        invoke( a, ipiv, info, minimal_workspace() );
     }
 
     static integer_t min_size_work(  ) {
@@ -101,7 +98,7 @@
 inline integer_t hetrf( MatrixA& a, VectorIPIV& ipiv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hetrf_impl< value_type >::compute( a, ipiv, info, work );
+    hetrf_impl< value_type >::invoke( a, ipiv, info, work );
     return info;
 }
 
@@ -110,7 +107,7 @@
 inline integer_t hetrf( MatrixA& a, VectorIPIV& ipiv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hetrf_impl< value_type >::compute( a, ipiv, info,
+    hetrf_impl< value_type >::invoke( a, ipiv, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetri.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetri.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HETRI_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -54,12 +52,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename WORK >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_ASSERT( uplo == 'U' || uplo == 'L' );
         BOOST_ASSERT( traits::matrix_num_columns(a) >= 0 );
@@ -77,18 +74,18 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
-        compute( uplo, a, ipiv, info, workspace( tmp_work ) );
+        invoke( uplo, a, ipiv, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             integer_t& info, optimal_workspace work ) {
-        compute( uplo, a, ipiv, info, minimal_workspace() );
+        invoke( uplo, a, ipiv, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -103,7 +100,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hetri_impl< value_type >::compute( uplo, a, ipiv, info, work );
+    hetri_impl< value_type >::invoke( uplo, a, ipiv, info, work );
     return info;
 }
 
@@ -112,7 +109,7 @@
 inline integer_t hetri( char const uplo, MatrixA& a, VectorIPIV& ipiv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hetri_impl< value_type >::compute( uplo, a, ipiv, info,
+    hetri_impl< value_type >::invoke( uplo, a, ipiv, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hetrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HETRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -54,12 +52,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -88,7 +85,7 @@
         MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hetrs_impl< value_type >::compute( uplo, a, ipiv, b, info );
+    hetrs_impl< value_type >::invoke( uplo, a, ipiv, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hgeqz.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hgeqz.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hgeqz.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HGEQZ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -96,13 +94,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixH, typename MatrixT, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixQ,
             typename MatrixZ, typename WORK >
-    static void compute( char const job, char const compq, char const compz,
+    static void invoke( char const job, char const compq, char const compz,
             integer_t const ilo, MatrixH& h, MatrixT& t, VectorALPHAR& alphar,
             VectorALPHAI& alphai, VectorBETA& beta, MatrixQ& q, MatrixZ& z,
             integer_t& info, detail::workspace1< WORK > work ) {
@@ -149,13 +147,13 @@
     template< typename MatrixH, typename MatrixT, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixQ,
             typename MatrixZ >
-    static void compute( char const job, char const compq, char const compz,
+    static void invoke( char const job, char const compq, char const compz,
             integer_t const ilo, MatrixH& h, MatrixT& t, VectorALPHAR& alphar,
             VectorALPHAI& alphai, VectorBETA& beta, MatrixQ& q, MatrixZ& z,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(h) ) );
-        compute( job, compq, compz, ilo, h, t, alphar, alphai, beta, q, z,
+        invoke( job, compq, compz, ilo, h, t, alphar, alphai, beta, q, z,
                 info, workspace( tmp_work ) );
     }
 
@@ -163,7 +161,7 @@
     template< typename MatrixH, typename MatrixT, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixQ,
             typename MatrixZ >
-    static void compute( char const job, char const compq, char const compz,
+    static void invoke( char const job, char const compq, char const compz,
             integer_t const ilo, MatrixH& h, MatrixT& t, VectorALPHAR& alphar,
             VectorALPHAI& alphai, VectorBETA& beta, MatrixQ& q, MatrixZ& z,
             integer_t& info, optimal_workspace work ) {
@@ -178,7 +176,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( job, compq, compz, ilo, h, t, alphar, alphai, beta, q, z,
+        invoke( job, compq, compz, ilo, h, t, alphar, alphai, beta, q, z,
                 info, workspace( tmp_work ) );
     }
 
@@ -193,13 +191,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixH, typename MatrixT, typename VectorALPHA,
             typename VectorBETA, typename MatrixQ, typename MatrixZ,
             typename WORK, typename RWORK >
-    static void compute( char const job, char const compq, char const compz,
+    static void invoke( char const job, char const compq, char const compz,
             integer_t const ilo, MatrixH& h, MatrixT& t, VectorALPHA& alpha,
             VectorBETA& beta, MatrixQ& q, MatrixZ& z, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
@@ -245,7 +243,7 @@
     // minimal workspace specialization
     template< typename MatrixH, typename MatrixT, typename VectorALPHA,
             typename VectorBETA, typename MatrixQ, typename MatrixZ >
-    static void compute( char const job, char const compq, char const compz,
+    static void invoke( char const job, char const compq, char const compz,
             integer_t const ilo, MatrixH& h, MatrixT& t, VectorALPHA& alpha,
             VectorBETA& beta, MatrixQ& q, MatrixZ& z, integer_t& info,
             minimal_workspace work ) {
@@ -253,14 +251,14 @@
                 traits::matrix_num_columns(h) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(h) ) );
-        compute( job, compq, compz, ilo, h, t, alpha, beta, q, z, info,
+        invoke( job, compq, compz, ilo, h, t, alpha, beta, q, z, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixH, typename MatrixT, typename VectorALPHA,
             typename VectorBETA, typename MatrixQ, typename MatrixZ >
-    static void compute( char const job, char const compq, char const compz,
+    static void invoke( char const job, char const compq, char const compz,
             integer_t const ilo, MatrixH& h, MatrixT& t, VectorALPHA& alpha,
             VectorBETA& beta, MatrixQ& q, MatrixZ& z, integer_t& info,
             optimal_workspace work ) {
@@ -277,7 +275,7 @@
                 traits::vector_storage(tmp_rwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( job, compq, compz, ilo, h, t, alpha, beta, q, z, info,
+        invoke( job, compq, compz, ilo, h, t, alpha, beta, q, z, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -301,7 +299,7 @@
         MatrixQ& q, MatrixZ& z, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixH >::value_type value_type;
     integer_t info(0);
-    hgeqz_impl< value_type >::compute( job, compq, compz, ilo, h, t,
+    hgeqz_impl< value_type >::invoke( job, compq, compz, ilo, h, t,
             alphar, alphai, beta, q, z, info, work );
     return info;
 }
@@ -316,7 +314,7 @@
         MatrixQ& q, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixH >::value_type value_type;
     integer_t info(0);
-    hgeqz_impl< value_type >::compute( job, compq, compz, ilo, h, t,
+    hgeqz_impl< value_type >::invoke( job, compq, compz, ilo, h, t,
             alphar, alphai, beta, q, z, info, optimal_workspace() );
     return info;
 }
@@ -330,7 +328,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixH >::value_type value_type;
     integer_t info(0);
-    hgeqz_impl< value_type >::compute( job, compq, compz, ilo, h, t,
+    hgeqz_impl< value_type >::invoke( job, compq, compz, ilo, h, t,
             alpha, beta, q, z, info, work );
     return info;
 }
@@ -343,7 +341,7 @@
         VectorALPHA& alpha, VectorBETA& beta, MatrixQ& q, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixH >::value_type value_type;
     integer_t info(0);
-    hgeqz_impl< value_type >::compute( job, compq, compz, ilo, h, t,
+    hgeqz_impl< value_type >::invoke( job, compq, compz, ilo, h, t,
             alpha, beta, q, z, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hprfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hprfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hprfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HPRFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -64,14 +62,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename RWORK >
-    static void compute( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, detail::workspace2< WORK,
             RWORK > work ) {
@@ -115,23 +112,23 @@
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( n, ap, afp, ipiv, b, x, ferr, berr, info,
-                workspace( tmp_work, tmp_rwork ) );
+        invoke( n, ap, afp, ipiv, b, x, ferr, berr, info, workspace( tmp_work,
+                tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, optimal_workspace work ) {
-        compute( n, ap, afp, ipiv, b, x, ferr, berr, info,
+        invoke( n, ap, afp, ipiv, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -154,8 +151,8 @@
         VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hprfs_impl< value_type >::compute( n, ap, afp, ipiv, b, x, ferr,
-            berr, info, work );
+    hprfs_impl< value_type >::invoke( n, ap, afp, ipiv, b, x, ferr, berr,
+            info, work );
     return info;
 }
 
@@ -168,8 +165,8 @@
         VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hprfs_impl< value_type >::compute( n, ap, afp, ipiv, b, x, ferr,
-            berr, info, optimal_workspace() );
+    hprfs_impl< value_type >::invoke( n, ap, afp, ipiv, b, x, ferr, berr,
+            info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hptrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HPTRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -52,12 +50,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAP, typename VectorIPIV, typename MatrixB >
-    static void compute( char const uplo, integer_t const n, MatrixAP& ap,
+    static void invoke( char const uplo, integer_t const n, MatrixAP& ap,
             VectorIPIV& ipiv, MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixAP >::value_type, typename traits::matrix_traits<
@@ -82,7 +79,7 @@
         VectorIPIV& ipiv, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hptrs_impl< value_type >::compute( uplo, n, ap, ipiv, b, info );
+    hptrs_impl< value_type >::invoke( uplo, n, ap, ipiv, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hsein.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hsein.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hsein.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HSEIN_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -93,13 +91,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorSELECT, typename MatrixH, typename VectorWR,
             typename VectorWI, typename MatrixVL, typename MatrixVR,
             typename VectorIFAILL, typename VectorIFAILR, typename WORK >
-    static void compute( char const side, char const eigsrc, char const initv,
+    static void invoke( char const side, char const eigsrc, char const initv,
             VectorSELECT& select, MatrixH& h, VectorWR& wr, VectorWI& wi,
             MatrixVL& vl, MatrixVR& vr, integer_t const mm, integer_t& m,
             VectorIFAILL& ifaill, VectorIFAILR& ifailr, integer_t& info,
@@ -149,28 +147,28 @@
     template< typename VectorSELECT, typename MatrixH, typename VectorWR,
             typename VectorWI, typename MatrixVL, typename MatrixVR,
             typename VectorIFAILL, typename VectorIFAILR >
-    static void compute( char const side, char const eigsrc, char const initv,
+    static void invoke( char const side, char const eigsrc, char const initv,
             VectorSELECT& select, MatrixH& h, VectorWR& wr, VectorWI& wi,
             MatrixVL& vl, MatrixVR& vr, integer_t const mm, integer_t& m,
             VectorIFAILL& ifaill, VectorIFAILR& ifailr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(h), ?2 ) );
-        compute( side, eigsrc, initv, select, h, wr, wi, vl, vr, mm, m,
-                ifaill, ifailr, info, workspace( tmp_work ) );
+        invoke( side, eigsrc, initv, select, h, wr, wi, vl, vr, mm, m, ifaill,
+                ifailr, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorSELECT, typename MatrixH, typename VectorWR,
             typename VectorWI, typename MatrixVL, typename MatrixVR,
             typename VectorIFAILL, typename VectorIFAILR >
-    static void compute( char const side, char const eigsrc, char const initv,
+    static void invoke( char const side, char const eigsrc, char const initv,
             VectorSELECT& select, MatrixH& h, VectorWR& wr, VectorWI& wi,
             MatrixVL& vl, MatrixVR& vr, integer_t const mm, integer_t& m,
             VectorIFAILL& ifaill, VectorIFAILR& ifailr, integer_t& info,
             optimal_workspace work ) {
-        compute( side, eigsrc, initv, select, h, wr, wi, vl, vr, mm, m,
-                ifaill, ifailr, info, minimal_workspace() );
+        invoke( side, eigsrc, initv, select, h, wr, wi, vl, vr, mm, m, ifaill,
+                ifailr, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n, ?? ) {
@@ -184,13 +182,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorSELECT, typename MatrixH, typename VectorW,
             typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
             typename VectorIFAILR, typename WORK, typename RWORK >
-    static void compute( char const side, char const eigsrc, char const initv,
+    static void invoke( char const side, char const eigsrc, char const initv,
             VectorSELECT& select, MatrixH& h, VectorW& w, MatrixVL& vl,
             MatrixVR& vr, integer_t const mm, integer_t& m,
             VectorIFAILL& ifaill, VectorIFAILR& ifailr, integer_t& info,
@@ -237,7 +235,7 @@
     template< typename VectorSELECT, typename MatrixH, typename VectorW,
             typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
             typename VectorIFAILR >
-    static void compute( char const side, char const eigsrc, char const initv,
+    static void invoke( char const side, char const eigsrc, char const initv,
             VectorSELECT& select, MatrixH& h, VectorW& w, MatrixVL& vl,
             MatrixVR& vr, integer_t const mm, integer_t& m,
             VectorIFAILL& ifaill, VectorIFAILR& ifailr, integer_t& info,
@@ -246,7 +244,7 @@
                 traits::matrix_num_columns(h) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(h) ) );
-        compute( side, eigsrc, initv, select, h, w, vl, vr, mm, m, ifaill,
+        invoke( side, eigsrc, initv, select, h, w, vl, vr, mm, m, ifaill,
                 ifailr, info, workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -254,12 +252,12 @@
     template< typename VectorSELECT, typename MatrixH, typename VectorW,
             typename MatrixVL, typename MatrixVR, typename VectorIFAILL,
             typename VectorIFAILR >
-    static void compute( char const side, char const eigsrc, char const initv,
+    static void invoke( char const side, char const eigsrc, char const initv,
             VectorSELECT& select, MatrixH& h, VectorW& w, MatrixVL& vl,
             MatrixVR& vr, integer_t const mm, integer_t& m,
             VectorIFAILL& ifaill, VectorIFAILR& ifailr, integer_t& info,
             optimal_workspace work ) {
-        compute( side, eigsrc, initv, select, h, w, vl, vr, mm, m, ifaill,
+        invoke( side, eigsrc, initv, select, h, w, vl, vr, mm, m, ifaill,
                 ifailr, info, minimal_workspace() );
     }
 
@@ -285,8 +283,8 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    hsein_impl< value_type >::compute( side, eigsrc, initv, select, h,
-            wr, wi, vl, vr, mm, m, ifaill, ifailr, info, work );
+    hsein_impl< value_type >::invoke( side, eigsrc, initv, select, h, wr,
+            wi, vl, vr, mm, m, ifaill, ifailr, info, work );
     return info;
 }
 
@@ -301,8 +299,8 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    hsein_impl< value_type >::compute( side, eigsrc, initv, select, h,
-            wr, wi, vl, vr, mm, m, ifaill, ifailr, info, optimal_workspace() );
+    hsein_impl< value_type >::invoke( side, eigsrc, initv, select, h, wr,
+            wi, vl, vr, mm, m, ifaill, ifailr, info, optimal_workspace() );
     return info;
 }
 // template function to call hsein
@@ -316,7 +314,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    hsein_impl< value_type >::compute( side, eigsrc, initv, select, h, w,
+    hsein_impl< value_type >::invoke( side, eigsrc, initv, select, h, w,
             vl, vr, mm, m, ifaill, ifailr, info, work );
     return info;
 }
@@ -332,7 +330,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    hsein_impl< value_type >::compute( side, eigsrc, initv, select, h, w,
+    hsein_impl< value_type >::invoke( side, eigsrc, initv, select, h, w,
             vl, vr, mm, m, ifaill, ifailr, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hseqr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hseqr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/hseqr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_HSEQR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -83,15 +81,14 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixH, typename VectorWR, typename VectorWI,
             typename MatrixZ, typename WORK >
-    static void compute( char const job, char const compz,
-            integer_t const ilo, integer_t const ihi, MatrixH& h,
-            VectorWR& wr, VectorWI& wi, MatrixZ& z, integer_t& info,
-            detail::workspace1< WORK > work ) {
+    static void invoke( char const job, char const compz, integer_t const ilo,
+            integer_t const ihi, MatrixH& h, VectorWR& wr, VectorWI& wi,
+            MatrixZ& z, integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixH >::value_type, typename traits::vector_traits<
                 VectorWR >::value_type >::value) );
@@ -118,24 +115,22 @@
     // minimal workspace specialization
     template< typename MatrixH, typename VectorWR, typename VectorWI,
             typename MatrixZ >
-    static void compute( char const job, char const compz,
-            integer_t const ilo, integer_t const ihi, MatrixH& h,
-            VectorWR& wr, VectorWI& wi, MatrixZ& z, integer_t& info,
-            minimal_workspace work ) {
+    static void invoke( char const job, char const compz, integer_t const ilo,
+            integer_t const ihi, MatrixH& h, VectorWR& wr, VectorWI& wi,
+            MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( job, compz, ilo, ihi, h, wr, wi, z, info,
+        invoke( job, compz, ilo, ihi, h, wr, wi, z, info,
                 workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixH, typename VectorWR, typename VectorWI,
             typename MatrixZ >
-    static void compute( char const job, char const compz,
-            integer_t const ilo, integer_t const ihi, MatrixH& h,
-            VectorWR& wr, VectorWI& wi, MatrixZ& z, integer_t& info,
-            optimal_workspace work ) {
-        compute( job, compz, ilo, ihi, h, wr, wi, z, info,
+    static void invoke( char const job, char const compz, integer_t const ilo,
+            integer_t const ihi, MatrixH& h, VectorWR& wr, VectorWI& wi,
+            MatrixZ& z, integer_t& info, optimal_workspace work ) {
+        invoke( job, compz, ilo, ihi, h, wr, wi, z, info,
                 minimal_workspace() );
     }
 
@@ -150,14 +145,14 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixH, typename VectorW, typename MatrixZ,
             typename WORK >
-    static void compute( char const job, char const compz,
-            integer_t const ilo, integer_t const ihi, MatrixH& h, VectorW& w,
-            MatrixZ& z, integer_t& info, detail::workspace1< WORK > work ) {
+    static void invoke( char const job, char const compz, integer_t const ilo,
+            integer_t const ihi, MatrixH& h, VectorW& w, MatrixZ& z,
+            integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixH >::value_type, typename traits::vector_traits<
                 VectorW >::value_type >::value) );
@@ -178,20 +173,20 @@
 
     // minimal workspace specialization
     template< typename MatrixH, typename VectorW, typename MatrixZ >
-    static void compute( char const job, char const compz,
-            integer_t const ilo, integer_t const ihi, MatrixH& h, VectorW& w,
-            MatrixZ& z, integer_t& info, minimal_workspace work ) {
+    static void invoke( char const job, char const compz, integer_t const ilo,
+            integer_t const ihi, MatrixH& h, VectorW& w, MatrixZ& z,
+            integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( job, compz, ilo, ihi, h, w, z, info, workspace( tmp_work ) );
+        invoke( job, compz, ilo, ihi, h, w, z, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixH, typename VectorW, typename MatrixZ >
-    static void compute( char const job, char const compz,
-            integer_t const ilo, integer_t const ihi, MatrixH& h, VectorW& w,
-            MatrixZ& z, integer_t& info, optimal_workspace work ) {
-        compute( job, compz, ilo, ihi, h, w, z, info, minimal_workspace() );
+    static void invoke( char const job, char const compz, integer_t const ilo,
+            integer_t const ihi, MatrixH& h, VectorW& w, MatrixZ& z,
+            integer_t& info, optimal_workspace work ) {
+        invoke( job, compz, ilo, ihi, h, w, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -208,8 +203,8 @@
         VectorWI& wi, MatrixZ& z, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixH >::value_type value_type;
     integer_t info(0);
-    hseqr_impl< value_type >::compute( job, compz, ilo, ihi, h, wr, wi,
-            z, info, work );
+    hseqr_impl< value_type >::invoke( job, compz, ilo, ihi, h, wr, wi, z,
+            info, work );
     return info;
 }
 
@@ -221,8 +216,8 @@
         VectorWI& wi, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixH >::value_type value_type;
     integer_t info(0);
-    hseqr_impl< value_type >::compute( job, compz, ilo, ihi, h, wr, wi,
-            z, info, optimal_workspace() );
+    hseqr_impl< value_type >::invoke( job, compz, ilo, ihi, h, wr, wi, z,
+            info, optimal_workspace() );
     return info;
 }
 // template function to call hseqr
@@ -233,7 +228,7 @@
         MatrixZ& z, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixH >::value_type value_type;
     integer_t info(0);
-    hseqr_impl< value_type >::compute( job, compz, ilo, ihi, h, w, z,
+    hseqr_impl< value_type >::invoke( job, compz, ilo, ihi, h, w, z,
             info, work );
     return info;
 }
@@ -245,7 +240,7 @@
         MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixH >::value_type value_type;
     integer_t info(0);
-    hseqr_impl< value_type >::compute( job, compz, ilo, ihi, h, w, z,
+    hseqr_impl< value_type >::invoke( job, compz, ilo, ihi, h, w, z,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/labrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/labrd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/labrd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_LABRD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -79,13 +77,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAUQ, typename VectorTAUP, typename MatrixX,
             typename MatrixY >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
             VectorTAUP& taup, MatrixX& x, MatrixY& y ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -135,13 +133,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAUQ, typename VectorTAUP, typename MatrixX,
             typename MatrixY >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAUQ& tauq,
             VectorTAUP& taup, MatrixX& x, MatrixY& y ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorD >::value_type, typename traits::vector_traits<
@@ -191,7 +189,7 @@
         VectorTAUQ& tauq, VectorTAUP& taup, MatrixX& x, MatrixY& y ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    labrd_impl< value_type >::compute( a, d, e, tauq, taup, x, y );
+    labrd_impl< value_type >::invoke( a, d, e, tauq, taup, x, y );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/lacon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/lacon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/lacon.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_LACON_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -67,11 +65,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorX, typename V, typename ISGN >
-    static void compute( integer_t const n, VectorX& x, real_type& est,
+    static void invoke( integer_t const n, VectorX& x, real_type& est,
             integer_t& kase, detail::workspace2< V, ISGN > work ) {
         BOOST_ASSERT( n >= 1 );
         BOOST_ASSERT( traits::vector_size(work.select(real_type())) >=
@@ -85,18 +83,18 @@
 
     // minimal workspace specialization
     template< typename VectorX >
-    static void compute( integer_t const n, VectorX& x, real_type& est,
+    static void invoke( integer_t const n, VectorX& x, real_type& est,
             integer_t& kase, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_v( min_size_v( n ) );
         traits::detail::array< integer_t > tmp_isgn( min_size_isgn( n ) );
-        compute( n, x, est, kase, workspace( tmp_v, tmp_isgn ) );
+        invoke( n, x, est, kase, workspace( tmp_v, tmp_isgn ) );
     }
 
     // optimal workspace specialization
     template< typename VectorX >
-    static void compute( integer_t const n, VectorX& x, real_type& est,
+    static void invoke( integer_t const n, VectorX& x, real_type& est,
             integer_t& kase, optimal_workspace work ) {
-        compute( n, x, est, kase, minimal_workspace() );
+        invoke( n, x, est, kase, minimal_workspace() );
     }
 
     static integer_t min_size_v( integer_t const n ) {
@@ -114,11 +112,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorX, typename V >
-    static void compute( integer_t const n, VectorX& x, real_type& est,
+    static void invoke( integer_t const n, VectorX& x, real_type& est,
             integer_t& kase, detail::workspace1< V > work ) {
         BOOST_ASSERT( n >= 1 );
         BOOST_ASSERT( traits::vector_size(work.select(value_type())) >=
@@ -129,17 +127,17 @@
 
     // minimal workspace specialization
     template< typename VectorX >
-    static void compute( integer_t const n, VectorX& x, real_type& est,
+    static void invoke( integer_t const n, VectorX& x, real_type& est,
             integer_t& kase, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_v( min_size_v( n ) );
-        compute( n, x, est, kase, workspace( tmp_v ) );
+        invoke( n, x, est, kase, workspace( tmp_v ) );
     }
 
     // optimal workspace specialization
     template< typename VectorX >
-    static void compute( integer_t const n, VectorX& x, real_type& est,
+    static void invoke( integer_t const n, VectorX& x, real_type& est,
             integer_t& kase, optimal_workspace work ) {
-        compute( n, x, est, kase, minimal_workspace() );
+        invoke( n, x, est, kase, minimal_workspace() );
     }
 
     static integer_t min_size_v( integer_t const n ) {
@@ -155,7 +153,7 @@
         integer_t& kase, Workspace work ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
     integer_t info(0);
-    lacon_impl< value_type >::compute( n, x, est, kase, work );
+    lacon_impl< value_type >::invoke( n, x, est, kase, work );
     return info;
 }
 
@@ -166,7 +164,7 @@
         integer_t& kase ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
     integer_t info(0);
-    lacon_impl< value_type >::compute( n, x, est, kase,
+    lacon_impl< value_type >::invoke( n, x, est, kase,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/laebz.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/laebz.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/laebz.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_LAEBZ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -62,13 +60,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename VectorE2,
             typename VectorNVAL, typename MatrixAB, typename VectorC,
             typename MatrixNAB, typename WORK, typename IWORK >
-    static void compute( integer_t const ijob, integer_t const nitmax,
+    static void invoke( integer_t const ijob, integer_t const nitmax,
             integer_t const n, integer_t const minp, integer_t const nbmin,
             real_type const abstol, real_type const reltol,
             real_type const pivmin, VectorD& d, VectorE& e, VectorE2& e2,
@@ -110,7 +108,7 @@
     template< typename VectorD, typename VectorE, typename VectorE2,
             typename VectorNVAL, typename MatrixAB, typename VectorC,
             typename MatrixNAB >
-    static void compute( integer_t const ijob, integer_t const nitmax,
+    static void invoke( integer_t const ijob, integer_t const nitmax,
             integer_t const n, integer_t const minp, integer_t const nbmin,
             real_type const abstol, real_type const reltol,
             real_type const pivmin, VectorD& d, VectorE& e, VectorE2& e2,
@@ -120,7 +118,7 @@
                 traits::leading_dimension(ab) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::leading_dimension(ab) ) );
-        compute( ijob, nitmax, n, minp, nbmin, abstol, reltol, pivmin, d, e,
+        invoke( ijob, nitmax, n, minp, nbmin, abstol, reltol, pivmin, d, e,
                 e2, nval, ab, c, mout, nab, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
@@ -129,13 +127,13 @@
     template< typename VectorD, typename VectorE, typename VectorE2,
             typename VectorNVAL, typename MatrixAB, typename VectorC,
             typename MatrixNAB >
-    static void compute( integer_t const ijob, integer_t const nitmax,
+    static void invoke( integer_t const ijob, integer_t const nitmax,
             integer_t const n, integer_t const minp, integer_t const nbmin,
             real_type const abstol, real_type const reltol,
             real_type const pivmin, VectorD& d, VectorE& e, VectorE2& e2,
             VectorNVAL& nval, MatrixAB& ab, VectorC& c, integer_t& mout,
             MatrixNAB& nab, integer_t& info, optimal_workspace work ) {
-        compute( ijob, nitmax, n, minp, nbmin, abstol, reltol, pivmin, d, e,
+        invoke( ijob, nitmax, n, minp, nbmin, abstol, reltol, pivmin, d, e,
                 e2, nval, ab, c, mout, nab, info, minimal_workspace() );
     }
 
@@ -162,7 +160,7 @@
         VectorC& c, integer_t& mout, MatrixNAB& nab, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    laebz_impl< value_type >::compute( ijob, nitmax, n, minp, nbmin,
+    laebz_impl< value_type >::invoke( ijob, nitmax, n, minp, nbmin,
             abstol, reltol, pivmin, d, e, e2, nval, ab, c, mout, nab, info,
             work );
     return info;
@@ -181,7 +179,7 @@
         VectorC& c, integer_t& mout, MatrixNAB& nab ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    laebz_impl< value_type >::compute( ijob, nitmax, n, minp, nbmin,
+    laebz_impl< value_type >::invoke( ijob, nitmax, n, minp, nbmin,
             abstol, reltol, pivmin, d, e, e2, nval, ab, c, mout, nab, info,
             optimal_workspace() );
     return info;
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/larz.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/larz.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/larz.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_LARZ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -75,11 +73,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorV, typename MatrixC, typename WORK >
-    static void compute( char const side, integer_t const l, VectorV& v,
+    static void invoke( char const side, integer_t const l, VectorV& v,
             integer_t const incv, real_type const tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -100,20 +98,20 @@
 
     // minimal workspace specialization
     template< typename VectorV, typename MatrixC >
-    static void compute( char const side, integer_t const l, VectorV& v,
+    static void invoke( char const side, integer_t const l, VectorV& v,
             integer_t const incv, real_type const tau, MatrixC& c,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, l, v, incv, tau, c, workspace( tmp_work ) );
+        invoke( side, l, v, incv, tau, c, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorV, typename MatrixC >
-    static void compute( char const side, integer_t const l, VectorV& v,
+    static void invoke( char const side, integer_t const l, VectorV& v,
             integer_t const incv, real_type const tau, MatrixC& c,
             optimal_workspace work ) {
-        compute( side, l, v, incv, tau, c, minimal_workspace() );
+        invoke( side, l, v, incv, tau, c, minimal_workspace() );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -131,11 +129,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorV, typename MatrixC, typename WORK >
-    static void compute( char const side, integer_t const l, VectorV& v,
+    static void invoke( char const side, integer_t const l, VectorV& v,
             integer_t const incv, value_type const tau, MatrixC& c,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -156,20 +154,20 @@
 
     // minimal workspace specialization
     template< typename VectorV, typename MatrixC >
-    static void compute( char const side, integer_t const l, VectorV& v,
+    static void invoke( char const side, integer_t const l, VectorV& v,
             integer_t const incv, value_type const tau, MatrixC& c,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, l, v, incv, tau, c, workspace( tmp_work ) );
+        invoke( side, l, v, incv, tau, c, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorV, typename MatrixC >
-    static void compute( char const side, integer_t const l, VectorV& v,
+    static void invoke( char const side, integer_t const l, VectorV& v,
             integer_t const incv, value_type const tau, MatrixC& c,
             optimal_workspace work ) {
-        compute( side, l, v, incv, tau, c, minimal_workspace() );
+        invoke( side, l, v, incv, tau, c, minimal_workspace() );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -189,7 +187,7 @@
         VectorV >::value_type const tau, MatrixC& c, Workspace work ) {
     typedef typename traits::vector_traits< VectorV >::value_type value_type;
     integer_t info(0);
-    larz_impl< value_type >::compute( side, l, v, incv, tau, c, work );
+    larz_impl< value_type >::invoke( side, l, v, incv, tau, c, work );
     return info;
 }
 
@@ -200,7 +198,7 @@
         VectorV >::value_type const tau, MatrixC& c ) {
     typedef typename traits::vector_traits< VectorV >::value_type value_type;
     integer_t info(0);
-    larz_impl< value_type >::compute( side, l, v, incv, tau, c,
+    larz_impl< value_type >::invoke( side, l, v, incv, tau, c,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_LATRD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -71,12 +69,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorE, typename VectorTAU,
             typename MatrixW >
-    static void compute( integer_t const nb, MatrixA& a, VectorE& e,
+    static void invoke( integer_t const nb, MatrixA& a, VectorE& e,
             VectorTAU& tau, MatrixW& w ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -106,12 +104,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorE, typename VectorTAU,
             typename MatrixW >
-    static void compute( integer_t const nb, MatrixA& a, VectorE& e,
+    static void invoke( integer_t const nb, MatrixA& a, VectorE& e,
             VectorTAU& tau, MatrixW& w ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -141,7 +139,7 @@
         VectorTAU& tau, MatrixW& w ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    latrd_impl< value_type >::compute( nb, a, e, tau, w );
+    latrd_impl< value_type >::invoke( nb, a, e, tau, w );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_LATRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -77,11 +75,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorX, typename VectorCNORM >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             char const normin, MatrixA& a, VectorX& x, real_type& scale,
             VectorCNORM& cnorm, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -111,11 +109,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorX, typename VectorCNORM >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             char const normin, MatrixA& a, VectorX& x, real_type& scale,
             VectorCNORM& cnorm, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -145,7 +143,7 @@
         VectorCNORM& cnorm ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    latrs_impl< value_type >::compute( uplo, trans, diag, normin, a, x,
+    latrs_impl< value_type >::invoke( uplo, trans, diag, normin, a, x,
             scale, cnorm, info );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrz.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrz.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/latrz.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_LATRZ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -71,11 +69,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorTAU& tau, detail::workspace1<
+    static void invoke( MatrixA& a, VectorTAU& tau, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -97,16 +95,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, minimal_workspace work ) {
+    static void invoke( MatrixA& a, VectorTAU& tau, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_rows(a) ) );
-        compute( a, tau, workspace( tmp_work ) );
+        invoke( a, tau, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, optimal_workspace work ) {
-        compute( a, tau, minimal_workspace() );
+    static void invoke( MatrixA& a, VectorTAU& tau, optimal_workspace work ) {
+        invoke( a, tau, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const m ) {
@@ -120,11 +118,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorTAU& tau, detail::workspace1<
+    static void invoke( MatrixA& a, VectorTAU& tau, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -146,16 +144,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, minimal_workspace work ) {
+    static void invoke( MatrixA& a, VectorTAU& tau, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_rows(a) ) );
-        compute( a, tau, workspace( tmp_work ) );
+        invoke( a, tau, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, optimal_workspace work ) {
-        compute( a, tau, minimal_workspace() );
+    static void invoke( MatrixA& a, VectorTAU& tau, optimal_workspace work ) {
+        invoke( a, tau, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const m ) {
@@ -169,7 +167,7 @@
 inline integer_t latrz( MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    latrz_impl< value_type >::compute( a, tau, work );
+    latrz_impl< value_type >::invoke( a, tau, work );
     return info;
 }
 
@@ -178,7 +176,7 @@
 inline integer_t latrz( MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    latrz_impl< value_type >::compute( a, tau, optimal_workspace() );
+    latrz_impl< value_type >::invoke( a, tau, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opgtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opgtr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opgtr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_OPGTR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -52,12 +50,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorAP, typename VectorTAU, typename MatrixQ,
             typename WORK >
-    static void compute( char const uplo, VectorAP& ap, VectorTAU& tau,
+    static void invoke( char const uplo, VectorAP& ap, VectorTAU& tau,
             MatrixQ& q, integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorAP >::value_type, typename traits::vector_traits<
@@ -84,18 +82,18 @@
 
     // minimal workspace specialization
     template< typename VectorAP, typename VectorTAU, typename MatrixQ >
-    static void compute( char const uplo, VectorAP& ap, VectorTAU& tau,
+    static void invoke( char const uplo, VectorAP& ap, VectorTAU& tau,
             MatrixQ& q, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(q) ) );
-        compute( uplo, ap, tau, q, info, workspace( tmp_work ) );
+        invoke( uplo, ap, tau, q, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorAP, typename VectorTAU, typename MatrixQ >
-    static void compute( char const uplo, VectorAP& ap, VectorTAU& tau,
+    static void invoke( char const uplo, VectorAP& ap, VectorTAU& tau,
             MatrixQ& q, integer_t& info, optimal_workspace work ) {
-        compute( uplo, ap, tau, q, info, minimal_workspace() );
+        invoke( uplo, ap, tau, q, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -111,7 +109,7 @@
         MatrixQ& q, Workspace work ) {
     typedef typename traits::vector_traits< VectorAP >::value_type value_type;
     integer_t info(0);
-    opgtr_impl< value_type >::compute( uplo, ap, tau, q, info, work );
+    opgtr_impl< value_type >::invoke( uplo, ap, tau, q, info, work );
     return info;
 }
 
@@ -121,7 +119,7 @@
         MatrixQ& q ) {
     typedef typename traits::vector_traits< VectorAP >::value_type value_type;
     integer_t info(0);
-    opgtr_impl< value_type >::compute( uplo, ap, tau, q, info,
+    opgtr_impl< value_type >::invoke( uplo, ap, tau, q, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opmtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opmtr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/opmtr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_OPMTR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -54,12 +52,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorAP, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const uplo, char const trans,
+    static void invoke( char const side, char const uplo, char const trans,
             VectorAP& ap, VectorTAU& tau, MatrixC& c, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -87,20 +85,20 @@
 
     // minimal workspace specialization
     template< typename VectorAP, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const uplo, char const trans,
+    static void invoke( char const side, char const uplo, char const trans,
             VectorAP& ap, VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, uplo, trans, ap, tau, c, info, workspace( tmp_work ) );
+        invoke( side, uplo, trans, ap, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorAP, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const uplo, char const trans,
+    static void invoke( char const side, char const uplo, char const trans,
             VectorAP& ap, VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
-        compute( side, uplo, trans, ap, tau, c, info, minimal_workspace() );
+        invoke( side, uplo, trans, ap, tau, c, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -121,7 +119,7 @@
         Workspace work ) {
     typedef typename traits::vector_traits< VectorAP >::value_type value_type;
     integer_t info(0);
-    opmtr_impl< value_type >::compute( side, uplo, trans, ap, tau, c,
+    opmtr_impl< value_type >::invoke( side, uplo, trans, ap, tau, c,
             info, work );
     return info;
 }
@@ -132,7 +130,7 @@
         char const trans, VectorAP& ap, VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::vector_traits< VectorAP >::value_type value_type;
     integer_t info(0);
-    opmtr_impl< value_type >::compute( side, uplo, trans, ap, tau, c,
+    opmtr_impl< value_type >::invoke( side, uplo, trans, ap, tau, c,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgbr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgbr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgbr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORGBR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -53,13 +51,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( char const vect, integer_t const m,
-            integer_t const n, integer_t const k, MatrixA& a, VectorTAU& tau,
-            integer_t& info, detail::workspace1< WORK > work ) {
+    static void invoke( char const vect, integer_t const m, integer_t const n,
+            integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
+            detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
                 VectorTAU >::value_type >::value) );
@@ -77,25 +75,25 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( char const vect, integer_t const m,
-            integer_t const n, integer_t const k, MatrixA& a, VectorTAU& tau,
-            integer_t& info, minimal_workspace work ) {
+    static void invoke( char const vect, integer_t const m, integer_t const n,
+            integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
+            minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( m, n ) );
-        compute( vect, m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( vect, m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( char const vect, integer_t const m,
-            integer_t const n, integer_t const k, MatrixA& a, VectorTAU& tau,
-            integer_t& info, optimal_workspace work ) {
+    static void invoke( char const vect, integer_t const m, integer_t const n,
+            integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
+            optimal_workspace work ) {
         real_type opt_size_work;
         detail::orgbr( vect, m, n, k, traits::matrix_storage(a),
                 traits::leading_dimension(a), traits::vector_storage(tau),
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( vect, m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( vect, m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n ) {
@@ -111,8 +109,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orgbr_impl< value_type >::compute( vect, m, n, k, a, tau, info,
-            work );
+    orgbr_impl< value_type >::invoke( vect, m, n, k, a, tau, info, work );
     return info;
 }
 
@@ -122,7 +119,7 @@
         integer_t const n, integer_t const k, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orgbr_impl< value_type >::compute( vect, m, n, k, a, tau, info,
+    orgbr_impl< value_type >::invoke( vect, m, n, k, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orghr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orghr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orghr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORGHR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -53,11 +51,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const n, integer_t const ilo,
+    static void invoke( integer_t const n, integer_t const ilo,
             integer_t const ihi, MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -76,17 +74,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const n, integer_t const ilo,
+    static void invoke( integer_t const n, integer_t const ilo,
             integer_t const ihi, MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( n, ilo, ihi, a, tau, info, workspace( tmp_work ) );
+        invoke( n, ilo, ihi, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const n, integer_t const ilo,
+    static void invoke( integer_t const n, integer_t const ilo,
             integer_t const ihi, MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -95,7 +93,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( n, ilo, ihi, a, tau, info, workspace( tmp_work ) );
+        invoke( n, ilo, ihi, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -110,7 +108,7 @@
         integer_t const ihi, MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orghr_impl< value_type >::compute( n, ilo, ihi, a, tau, info, work );
+    orghr_impl< value_type >::invoke( n, ilo, ihi, a, tau, info, work );
     return info;
 }
 
@@ -120,7 +118,7 @@
         integer_t const ihi, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orghr_impl< value_type >::compute( n, ilo, ihi, a, tau, info,
+    orghr_impl< value_type >::invoke( n, ilo, ihi, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orglq.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orglq.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orglq.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORGLQ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -53,11 +51,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -78,16 +76,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( m ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -96,7 +94,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m ) {
@@ -111,7 +109,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orglq_impl< value_type >::compute( m, n, k, a, tau, info, work );
+    orglq_impl< value_type >::invoke( m, n, k, a, tau, info, work );
     return info;
 }
 
@@ -121,7 +119,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orglq_impl< value_type >::compute( m, n, k, a, tau, info,
+    orglq_impl< value_type >::invoke( m, n, k, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgql.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgql.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgql.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORGQL_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -53,11 +51,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -78,16 +76,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -96,7 +94,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -111,7 +109,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orgql_impl< value_type >::compute( m, n, k, a, tau, info, work );
+    orgql_impl< value_type >::invoke( m, n, k, a, tau, info, work );
     return info;
 }
 
@@ -121,7 +119,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orgql_impl< value_type >::compute( m, n, k, a, tau, info,
+    orgql_impl< value_type >::invoke( m, n, k, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgqr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgqr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgqr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORGQR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -53,11 +51,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -78,16 +76,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -96,7 +94,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -111,7 +109,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orgqr_impl< value_type >::compute( m, n, k, a, tau, info, work );
+    orgqr_impl< value_type >::invoke( m, n, k, a, tau, info, work );
     return info;
 }
 
@@ -121,7 +119,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orgqr_impl< value_type >::compute( m, n, k, a, tau, info,
+    orgqr_impl< value_type >::invoke( m, n, k, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgrq.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgrq.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgrq.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORGRQ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -53,11 +51,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -78,16 +76,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( m ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -96,7 +94,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m ) {
@@ -111,7 +109,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orgrq_impl< value_type >::compute( m, n, k, a, tau, info, work );
+    orgrq_impl< value_type >::invoke( m, n, k, a, tau, info, work );
     return info;
 }
 
@@ -121,7 +119,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orgrq_impl< value_type >::compute( m, n, k, a, tau, info,
+    orgrq_impl< value_type >::invoke( m, n, k, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/orgtr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORGTR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -53,11 +51,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const n, MatrixA& a, VectorTAU& tau,
+    static void invoke( integer_t const n, MatrixA& a, VectorTAU& tau,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -78,15 +76,15 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const n, MatrixA& a, VectorTAU& tau,
+    static void invoke( integer_t const n, MatrixA& a, VectorTAU& tau,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( n, a, tau, info, workspace( tmp_work ) );
+        invoke( n, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const n, MatrixA& a, VectorTAU& tau,
+    static void invoke( integer_t const n, MatrixA& a, VectorTAU& tau,
             integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         detail::orgtr( traits::matrix_uplo_tag(a), n,
@@ -94,7 +92,7 @@
                 traits::vector_storage(tau), &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( n, a, tau, info, workspace( tmp_work ) );
+        invoke( n, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -109,7 +107,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orgtr_impl< value_type >::compute( n, a, tau, info, work );
+    orgtr_impl< value_type >::invoke( n, a, tau, info, work );
     return info;
 }
 
@@ -118,7 +116,7 @@
 inline integer_t orgtr( integer_t const n, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    orgtr_impl< value_type >::compute( n, a, tau, info,
+    orgtr_impl< value_type >::invoke( n, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormbr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormbr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormbr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORMBR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -58,12 +56,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const vect, char const side, char const trans,
+    static void invoke( char const vect, char const side, char const trans,
             integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -94,18 +92,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const vect, char const side, char const trans,
+    static void invoke( char const vect, char const side, char const trans,
             integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( vect, side, trans, k, a, tau, c, info,
-                workspace( tmp_work ) );
+        invoke( vect, side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const vect, char const side, char const trans,
+    static void invoke( char const vect, char const side, char const trans,
             integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c,
             integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
@@ -116,8 +113,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( vect, side, trans, k, a, tau, c, info,
-                workspace( tmp_work ) );
+        invoke( vect, side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -138,7 +134,7 @@
         MatrixC& c, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormbr_impl< value_type >::compute( vect, side, trans, k, a, tau, c,
+    ormbr_impl< value_type >::invoke( vect, side, trans, k, a, tau, c,
             info, work );
     return info;
 }
@@ -150,7 +146,7 @@
         MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormbr_impl< value_type >::compute( vect, side, trans, k, a, tau, c,
+    ormbr_impl< value_type >::invoke( vect, side, trans, k, a, tau, c,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormhr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormhr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormhr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORMHR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -59,12 +57,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans,
+    static void invoke( char const side, char const trans,
             integer_t const ilo, integer_t const ihi, MatrixA& a,
             VectorTAU& tau, MatrixC& c, integer_t& info, detail::workspace1<
             WORK > work ) {
@@ -94,19 +92,19 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans,
+    static void invoke( char const side, char const trans,
             integer_t const ilo, integer_t const ihi, MatrixA& a,
             VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, trans, ilo, ihi, a, tau, c, info,
+        invoke( side, trans, ilo, ihi, a, tau, c, info,
                 workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans,
+    static void invoke( char const side, char const trans,
             integer_t const ilo, integer_t const ihi, MatrixA& a,
             VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
@@ -118,7 +116,7 @@
                 traits::leading_dimension(c), &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, ilo, ihi, a, tau, c, info,
+        invoke( side, trans, ilo, ihi, a, tau, c, info,
                 workspace( tmp_work ) );
     }
 
@@ -140,7 +138,7 @@
         MatrixC& c, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormhr_impl< value_type >::compute( side, trans, ilo, ihi, a, tau, c,
+    ormhr_impl< value_type >::invoke( side, trans, ilo, ihi, a, tau, c,
             info, work );
     return info;
 }
@@ -152,7 +150,7 @@
         MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormhr_impl< value_type >::compute( side, trans, ilo, ihi, a, tau, c,
+    ormhr_impl< value_type >::invoke( side, trans, ilo, ihi, a, tau, c,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormlq.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormlq.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormlq.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORMLQ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -57,12 +55,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -92,17 +90,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -113,7 +111,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -134,7 +132,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormlq_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    ormlq_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             work );
     return info;
 }
@@ -145,7 +143,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormlq_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    ormlq_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormql.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormql.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormql.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORMQL_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -57,12 +55,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -91,17 +89,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -112,7 +110,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -133,7 +131,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormql_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    ormql_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             work );
     return info;
 }
@@ -144,7 +142,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormql_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    ormql_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormqr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormqr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormqr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORMQR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -57,12 +55,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -91,17 +89,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -112,7 +110,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -133,7 +131,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormqr_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    ormqr_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             work );
     return info;
 }
@@ -144,7 +142,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormqr_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    ormqr_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrq.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrq.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrq.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORMRQ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -57,12 +55,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -92,17 +90,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -113,7 +111,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -134,7 +132,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormrq_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    ormrq_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             work );
     return info;
 }
@@ -145,7 +143,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormrq_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    ormrq_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrz.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrz.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormrz.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORMRZ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -58,12 +56,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -93,17 +91,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -115,7 +113,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -132,7 +130,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormrz_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    ormrz_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             work );
     return info;
 }
@@ -143,7 +141,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormrz_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    ormrz_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormtr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ormtr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_ORMTR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -57,12 +55,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans, MatrixA& a,
+    static void invoke( char const side, char const trans, MatrixA& a,
             VectorTAU& tau, MatrixC& c, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -93,17 +91,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, MatrixA& a,
+    static void invoke( char const side, char const trans, MatrixA& a,
             VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, trans, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, MatrixA& a,
+    static void invoke( char const side, char const trans, MatrixA& a,
             VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -114,7 +112,7 @@
                 traits::leading_dimension(c), &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -134,7 +132,7 @@
         VectorTAU& tau, MatrixC& c, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormtr_impl< value_type >::compute( side, trans, a, tau, c, info,
+    ormtr_impl< value_type >::invoke( side, trans, a, tau, c, info,
             work );
     return info;
 }
@@ -145,7 +143,7 @@
         VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ormtr_impl< value_type >::compute( side, trans, a, tau, c, info,
+    ormtr_impl< value_type >::invoke( side, trans, a, tau, c, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbcon.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PBCON_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -75,11 +73,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename WORK, typename IWORK >
-    static void compute( char const uplo, integer_t const n,
+    static void invoke( char const uplo, integer_t const n,
             integer_t const kd, MatrixAB& ab, real_type const anorm,
             real_type& rcond, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
@@ -99,21 +97,21 @@
 
     // minimal workspace specialization
     template< typename MatrixAB >
-    static void compute( char const uplo, integer_t const n,
+    static void invoke( char const uplo, integer_t const n,
             integer_t const kd, MatrixAB& ab, real_type const anorm,
             real_type& rcond, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( uplo, n, kd, ab, anorm, rcond, info, workspace( tmp_work,
+        invoke( uplo, n, kd, ab, anorm, rcond, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB >
-    static void compute( char const uplo, integer_t const n,
+    static void invoke( char const uplo, integer_t const n,
             integer_t const kd, MatrixAB& ab, real_type const anorm,
             real_type& rcond, integer_t& info, optimal_workspace work ) {
-        compute( uplo, n, kd, ab, anorm, rcond, info, minimal_workspace() );
+        invoke( uplo, n, kd, ab, anorm, rcond, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -131,11 +129,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename WORK, typename RWORK >
-    static void compute( char const uplo, integer_t const n,
+    static void invoke( char const uplo, integer_t const n,
             integer_t const kd, MatrixAB& ab, real_type const anorm,
             real_type& rcond, integer_t& info, detail::workspace2< WORK,
             RWORK > work ) {
@@ -155,21 +153,21 @@
 
     // minimal workspace specialization
     template< typename MatrixAB >
-    static void compute( char const uplo, integer_t const n,
+    static void invoke( char const uplo, integer_t const n,
             integer_t const kd, MatrixAB& ab, real_type const anorm,
             real_type& rcond, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( uplo, n, kd, ab, anorm, rcond, info, workspace( tmp_work,
+        invoke( uplo, n, kd, ab, anorm, rcond, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB >
-    static void compute( char const uplo, integer_t const n,
+    static void invoke( char const uplo, integer_t const n,
             integer_t const kd, MatrixAB& ab, real_type const anorm,
             real_type& rcond, integer_t& info, optimal_workspace work ) {
-        compute( uplo, n, kd, ab, anorm, rcond, info, minimal_workspace() );
+        invoke( uplo, n, kd, ab, anorm, rcond, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -190,7 +188,7 @@
         MatrixAB >::value_type& rcond, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    pbcon_impl< value_type >::compute( uplo, n, kd, ab, anorm, rcond,
+    pbcon_impl< value_type >::invoke( uplo, n, kd, ab, anorm, rcond,
             info, work );
     return info;
 }
@@ -203,7 +201,7 @@
         MatrixAB >::value_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    pbcon_impl< value_type >::compute( uplo, n, kd, ab, anorm, rcond,
+    pbcon_impl< value_type >::invoke( uplo, n, kd, ab, anorm, rcond,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbequ.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PBEQU_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -69,11 +67,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAB, typename VectorS >
-    static void compute( integer_t const n, integer_t const kd, MatrixAB& ab,
+    static void invoke( integer_t const n, integer_t const kd, MatrixAB& ab,
             VectorS& s, real_type& scond, real_type& amax, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixAB >::value_type, typename traits::vector_traits<
@@ -95,11 +93,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAB, typename VectorS >
-    static void compute( integer_t const n, integer_t const kd, MatrixAB& ab,
+    static void invoke( integer_t const n, integer_t const kd, MatrixAB& ab,
             VectorS& s, real_type& scond, real_type& amax, integer_t& info ) {
         BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
                 traits::matrix_uplo_tag(a) == 'L' );
@@ -121,7 +119,7 @@
         MatrixAB >::value_type& amax ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    pbequ_impl< value_type >::compute( n, kd, ab, s, scond, amax, info );
+    pbequ_impl< value_type >::invoke( n, kd, ab, s, scond, amax, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbrfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbrfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PBRFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -87,14 +85,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename IWORK >
-    static void compute( integer_t const n, integer_t const kd, MatrixAB& ab,
+    static void invoke( integer_t const n, integer_t const kd, MatrixAB& ab,
             MatrixAFB& afb, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
@@ -142,22 +139,22 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( integer_t const n, integer_t const kd, MatrixAB& ab,
+    static void invoke( integer_t const n, integer_t const kd, MatrixAB& ab,
             MatrixAFB& afb, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( n, kd, ab, afb, b, x, ferr, berr, info, workspace( tmp_work,
+        invoke( n, kd, ab, afb, b, x, ferr, berr, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( integer_t const n, integer_t const kd, MatrixAB& ab,
+    static void invoke( integer_t const n, integer_t const kd, MatrixAB& ab,
             MatrixAFB& afb, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, optimal_workspace work ) {
-        compute( n, kd, ab, afb, b, x, ferr, berr, info, minimal_workspace() );
+        invoke( n, kd, ab, afb, b, x, ferr, berr, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -175,14 +172,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename RWORK >
-    static void compute( integer_t const n, integer_t const kd, MatrixAB& ab,
+    static void invoke( integer_t const n, integer_t const kd, MatrixAB& ab,
             MatrixAFB& afb, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, detail::workspace2< WORK,
             RWORK > work ) {
@@ -227,22 +223,22 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( integer_t const n, integer_t const kd, MatrixAB& ab,
+    static void invoke( integer_t const n, integer_t const kd, MatrixAB& ab,
             MatrixAFB& afb, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( n, kd, ab, afb, b, x, ferr, berr, info, workspace( tmp_work,
+        invoke( n, kd, ab, afb, b, x, ferr, berr, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( integer_t const n, integer_t const kd, MatrixAB& ab,
+    static void invoke( integer_t const n, integer_t const kd, MatrixAB& ab,
             MatrixAFB& afb, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, optimal_workspace work ) {
-        compute( n, kd, ab, afb, b, x, ferr, berr, info, minimal_workspace() );
+        invoke( n, kd, ab, afb, b, x, ferr, berr, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -264,7 +260,7 @@
         VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    pbrfs_impl< value_type >::compute( n, kd, ab, afb, b, x, ferr, berr,
+    pbrfs_impl< value_type >::invoke( n, kd, ab, afb, b, x, ferr, berr,
             info, work );
     return info;
 }
@@ -277,7 +273,7 @@
         VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    pbrfs_impl< value_type >::compute( n, kd, ab, afb, b, x, ferr, berr,
+    pbrfs_impl< value_type >::invoke( n, kd, ab, afb, b, x, ferr, berr,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbstf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbstf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbstf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PBSTF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -56,11 +54,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAB >
-    static void compute( integer_t const n, integer_t const kd, MatrixAB& ab,
+    static void invoke( integer_t const n, integer_t const kd, MatrixAB& ab,
             integer_t& info ) {
         BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
                 traits::matrix_uplo_tag(a) == 'L' );
@@ -80,7 +78,7 @@
         MatrixAB& ab ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    pbstf_impl< value_type >::compute( n, kd, ab, info );
+    pbstf_impl< value_type >::invoke( n, kd, ab, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PBTRF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -56,11 +54,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAB >
-    static void compute( integer_t const n, integer_t const kd, MatrixAB& ab,
+    static void invoke( integer_t const n, integer_t const kd, MatrixAB& ab,
             integer_t& info ) {
         BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
                 traits::matrix_uplo_tag(a) == 'L' );
@@ -80,7 +78,7 @@
         MatrixAB& ab ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    pbtrf_impl< value_type >::compute( n, kd, ab, info );
+    pbtrf_impl< value_type >::invoke( n, kd, ab, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pbtrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PBTRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -62,12 +60,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAB, typename MatrixB >
-    static void compute( char const uplo, integer_t const n,
+    static void invoke( char const uplo, integer_t const n,
             integer_t const kd, MatrixAB& ab, MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixAB >::value_type, typename traits::matrix_traits<
@@ -92,7 +89,7 @@
         integer_t const kd, MatrixAB& ab, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    pbtrs_impl< value_type >::compute( uplo, n, kd, ab, b, info );
+    pbtrs_impl< value_type >::invoke( uplo, n, kd, ab, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pocon.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_POCON_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -75,11 +73,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename WORK, typename IWORK >
-    static void compute( MatrixA& a, real_type const anorm, real_type& rcond,
+    static void invoke( MatrixA& a, real_type const anorm, real_type& rcond,
             integer_t& info, detail::workspace2< WORK, IWORK > work ) {
         BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
                 traits::matrix_uplo_tag(a) == 'L' );
@@ -99,20 +97,20 @@
 
     // minimal workspace specialization
     template< typename MatrixA >
-    static void compute( MatrixA& a, real_type const anorm, real_type& rcond,
+    static void invoke( MatrixA& a, real_type const anorm, real_type& rcond,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( a, anorm, rcond, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( a, anorm, rcond, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA >
-    static void compute( MatrixA& a, real_type const anorm, real_type& rcond,
+    static void invoke( MatrixA& a, real_type const anorm, real_type& rcond,
             integer_t& info, optimal_workspace work ) {
-        compute( a, anorm, rcond, info, minimal_workspace() );
+        invoke( a, anorm, rcond, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -130,11 +128,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename WORK, typename RWORK >
-    static void compute( MatrixA& a, real_type const anorm, real_type& rcond,
+    static void invoke( MatrixA& a, real_type const anorm, real_type& rcond,
             integer_t& info, detail::workspace2< WORK, RWORK > work ) {
         BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
                 traits::matrix_uplo_tag(a) == 'L' );
@@ -154,20 +152,20 @@
 
     // minimal workspace specialization
     template< typename MatrixA >
-    static void compute( MatrixA& a, real_type const anorm, real_type& rcond,
+    static void invoke( MatrixA& a, real_type const anorm, real_type& rcond,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( a, anorm, rcond, info, workspace( tmp_work, tmp_rwork ) );
+        invoke( a, anorm, rcond, info, workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA >
-    static void compute( MatrixA& a, real_type const anorm, real_type& rcond,
+    static void invoke( MatrixA& a, real_type const anorm, real_type& rcond,
             integer_t& info, optimal_workspace work ) {
-        compute( a, anorm, rcond, info, minimal_workspace() );
+        invoke( a, anorm, rcond, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -187,7 +185,7 @@
         MatrixA >::value_type& rcond, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    pocon_impl< value_type >::compute( a, anorm, rcond, info, work );
+    pocon_impl< value_type >::invoke( a, anorm, rcond, info, work );
     return info;
 }
 
@@ -198,7 +196,7 @@
         MatrixA >::value_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    pocon_impl< value_type >::compute( a, anorm, rcond, info,
+    pocon_impl< value_type >::invoke( a, anorm, rcond, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/poequ.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/poequ.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/poequ.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_POEQU_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -67,11 +65,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorS >
-    static void compute( MatrixA& a, VectorS& s, real_type& scond,
+    static void invoke( MatrixA& a, VectorS& s, real_type& scond,
             real_type& amax, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -91,11 +89,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorS >
-    static void compute( MatrixA& a, VectorS& s, real_type& scond,
+    static void invoke( MatrixA& a, VectorS& s, real_type& scond,
             real_type& amax, integer_t& info ) {
         BOOST_ASSERT( traits::matrix_num_columns(a) >= 0 );
         BOOST_ASSERT( traits::leading_dimension(a) >= std::max(1,
@@ -114,7 +112,7 @@
         typename traits::matrix_traits< MatrixA >::value_type& amax ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    poequ_impl< value_type >::compute( a, s, scond, amax, info );
+    poequ_impl< value_type >::invoke( a, s, scond, amax, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/porfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/porfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/porfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PORFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -87,14 +85,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename IWORK >
-    static void compute( MatrixA& a, MatrixAF& af, MatrixB& b, MatrixX& x,
+    static void invoke( MatrixA& a, MatrixAF& af, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -144,24 +141,24 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixAF, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( MatrixA& a, MatrixAF& af, MatrixB& b, MatrixX& x,
+    static void invoke( MatrixA& a, MatrixAF& af, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( a, af, b, x, ferr, berr, info, workspace( tmp_work,
+        invoke( a, af, b, x, ferr, berr, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixAF, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( MatrixA& a, MatrixAF& af, MatrixB& b, MatrixX& x,
+    static void invoke( MatrixA& a, MatrixAF& af, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( a, af, b, x, ferr, berr, info, minimal_workspace() );
+        invoke( a, af, b, x, ferr, berr, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -179,14 +176,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename RWORK >
-    static void compute( MatrixA& a, MatrixAF& af, MatrixB& b, MatrixX& x,
+    static void invoke( MatrixA& a, MatrixAF& af, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -233,24 +229,24 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixAF, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( MatrixA& a, MatrixAF& af, MatrixB& b, MatrixX& x,
+    static void invoke( MatrixA& a, MatrixAF& af, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( a, af, b, x, ferr, berr, info, workspace( tmp_work,
+        invoke( a, af, b, x, ferr, berr, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixAF, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( MatrixA& a, MatrixAF& af, MatrixB& b, MatrixX& x,
+    static void invoke( MatrixA& a, MatrixAF& af, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( a, af, b, x, ferr, berr, info, minimal_workspace() );
+        invoke( a, af, b, x, ferr, berr, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -271,7 +267,7 @@
         VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    porfs_impl< value_type >::compute( a, af, b, x, ferr, berr, info,
+    porfs_impl< value_type >::invoke( a, af, b, x, ferr, berr, info,
             work );
     return info;
 }
@@ -283,7 +279,7 @@
         VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    porfs_impl< value_type >::compute( a, af, b, x, ferr, berr, info,
+    porfs_impl< value_type >::invoke( a, af, b, x, ferr, berr, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_POTRF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -56,11 +54,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA >
-    static void compute( MatrixA& a, integer_t& info ) {
+    static void invoke( MatrixA& a, integer_t& info ) {
         BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
                 traits::matrix_uplo_tag(a) == 'L' );
         BOOST_ASSERT( traits::matrix_num_columns(a) >= 0 );
@@ -78,7 +76,7 @@
 inline integer_t potrf( MatrixA& a ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    potrf_impl< value_type >::compute( a, info );
+    potrf_impl< value_type >::invoke( a, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potri.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potri.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_POTRI_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -56,11 +54,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA >
-    static void compute( MatrixA& a, integer_t& info ) {
+    static void invoke( MatrixA& a, integer_t& info ) {
         BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
                 traits::matrix_uplo_tag(a) == 'L' );
         BOOST_ASSERT( traits::matrix_num_columns(a) >= 0 );
@@ -78,7 +76,7 @@
 inline integer_t potri( MatrixA& a ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    potri_impl< value_type >::compute( a, info );
+    potri_impl< value_type >::invoke( a, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/potrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_POTRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -62,12 +60,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename MatrixB >
-    static void compute( MatrixA& a, MatrixB& b, integer_t& info ) {
+    static void invoke( MatrixA& a, MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
                 MatrixB >::value_type >::value) );
@@ -93,7 +90,7 @@
 inline integer_t potrs( MatrixA& a, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    potrs_impl< value_type >::compute( a, b, info );
+    potrs_impl< value_type >::invoke( a, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pprfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pprfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pprfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PPRFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -85,14 +83,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename VectorAFP, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename IWORK >
-    static void compute( integer_t const n, MatrixAP& ap, VectorAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, VectorAFP& afp,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, detail::workspace2< WORK, IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -136,22 +133,22 @@
     // minimal workspace specialization
     template< typename MatrixAP, typename VectorAFP, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( integer_t const n, MatrixAP& ap, VectorAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, VectorAFP& afp,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( n, ap, afp, b, x, ferr, berr, info, workspace( tmp_work,
+        invoke( n, ap, afp, b, x, ferr, berr, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename VectorAFP, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( integer_t const n, MatrixAP& ap, VectorAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, VectorAFP& afp,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, optimal_workspace work ) {
-        compute( n, ap, afp, b, x, ferr, berr, info, minimal_workspace() );
+        invoke( n, ap, afp, b, x, ferr, berr, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -169,14 +166,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename VectorAFP, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename RWORK >
-    static void compute( integer_t const n, MatrixAP& ap, VectorAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, VectorAFP& afp,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, detail::workspace2< WORK, RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -217,22 +213,22 @@
     // minimal workspace specialization
     template< typename MatrixAP, typename VectorAFP, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( integer_t const n, MatrixAP& ap, VectorAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, VectorAFP& afp,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( n, ap, afp, b, x, ferr, berr, info, workspace( tmp_work,
+        invoke( n, ap, afp, b, x, ferr, berr, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename VectorAFP, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( integer_t const n, MatrixAP& ap, VectorAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, VectorAFP& afp,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, optimal_workspace work ) {
-        compute( n, ap, afp, b, x, ferr, berr, info, minimal_workspace() );
+        invoke( n, ap, afp, b, x, ferr, berr, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -254,8 +250,8 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    pprfs_impl< value_type >::compute( n, ap, afp, b, x, ferr, berr,
-            info, work );
+    pprfs_impl< value_type >::invoke( n, ap, afp, b, x, ferr, berr, info,
+            work );
     return info;
 }
 
@@ -266,8 +262,8 @@
         MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    pprfs_impl< value_type >::compute( n, ap, afp, b, x, ferr, berr,
-            info, optimal_workspace() );
+    pprfs_impl< value_type >::invoke( n, ap, afp, b, x, ferr, berr, info,
+            optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pptrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PPTRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -62,11 +60,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename VectorAP, typename MatrixB >
-    static void compute( integer_t const n, VectorAP& ap, MatrixB& b,
+    static void invoke( integer_t const n, VectorAP& ap, MatrixB& b,
             integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorAP >::value_type, typename traits::matrix_traits<
@@ -89,7 +87,7 @@
 inline integer_t pptrs( integer_t const n, VectorAP& ap, MatrixB& b ) {
     typedef typename traits::vector_traits< VectorAP >::value_type value_type;
     integer_t info(0);
-    pptrs_impl< value_type >::compute( n, ap, b, info );
+    pptrs_impl< value_type >::invoke( n, ap, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pteqr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pteqr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pteqr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PTEQR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -71,12 +69,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ,
             typename WORK >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -99,17 +97,17 @@
 
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( compz, n, d, e, z, info, workspace( tmp_work ) );
+        invoke( compz, n, d, e, z, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, optimal_workspace work ) {
-        compute( compz, n, d, e, z, info, minimal_workspace() );
+        invoke( compz, n, d, e, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -123,12 +121,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ,
             typename WORK >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -148,17 +146,17 @@
 
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( compz, n, d, e, z, info, workspace( tmp_work ) );
+        invoke( compz, n, d, e, z, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, optimal_workspace work ) {
-        compute( compz, n, d, e, z, info, minimal_workspace() );
+        invoke( compz, n, d, e, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -174,7 +172,7 @@
         VectorE& e, MatrixZ& z, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    pteqr_impl< value_type >::compute( compz, n, d, e, z, info, work );
+    pteqr_impl< value_type >::invoke( compz, n, d, e, z, info, work );
     return info;
 }
 
@@ -184,7 +182,7 @@
         VectorE& e, MatrixZ& z ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    pteqr_impl< value_type >::compute( compz, n, d, e, z, info,
+    pteqr_impl< value_type >::invoke( compz, n, d, e, z, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ptrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ptrfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ptrfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PTRFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -85,13 +83,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename VectorDF,
             typename VectorEF, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR, typename WORK >
-    static void compute( integer_t const n, VectorD& d, VectorE& e,
+    static void invoke( integer_t const n, VectorD& d, VectorE& e,
             VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace1< WORK > work ) {
@@ -141,12 +139,12 @@
     template< typename VectorD, typename VectorE, typename VectorDF,
             typename VectorEF, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( integer_t const n, VectorD& d, VectorE& e,
+    static void invoke( integer_t const n, VectorD& d, VectorE& e,
             VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( n, d, e, df, ef, b, x, ferr, berr, info,
+        invoke( n, d, e, df, ef, b, x, ferr, berr, info,
                 workspace( tmp_work ) );
     }
 
@@ -154,12 +152,11 @@
     template< typename VectorD, typename VectorE, typename VectorDF,
             typename VectorEF, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( integer_t const n, VectorD& d, VectorE& e,
+    static void invoke( integer_t const n, VectorD& d, VectorE& e,
             VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( n, d, e, df, ef, b, x, ferr, berr, info,
-                minimal_workspace() );
+        invoke( n, d, e, df, ef, b, x, ferr, berr, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -173,14 +170,14 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename VectorDF,
             typename VectorEF, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR, typename WORK,
             typename RWORK >
-    static void compute( char const uplo, integer_t const n, VectorD& d,
+    static void invoke( char const uplo, integer_t const n, VectorD& d,
             VectorE& e, VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
@@ -231,13 +228,13 @@
     template< typename VectorD, typename VectorE, typename VectorDF,
             typename VectorEF, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, integer_t const n, VectorD& d,
+    static void invoke( char const uplo, integer_t const n, VectorD& d,
             VectorE& e, VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( uplo, n, d, e, df, ef, b, x, ferr, berr, info,
+        invoke( uplo, n, d, e, df, ef, b, x, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -245,11 +242,11 @@
     template< typename VectorD, typename VectorE, typename VectorDF,
             typename VectorEF, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, integer_t const n, VectorD& d,
+    static void invoke( char const uplo, integer_t const n, VectorD& d,
             VectorE& e, VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( uplo, n, d, e, df, ef, b, x, ferr, berr, info,
+        invoke( uplo, n, d, e, df, ef, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -272,7 +269,7 @@
         VectorBERR& berr, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    ptrfs_impl< value_type >::compute( n, d, e, df, ef, b, x, ferr, berr,
+    ptrfs_impl< value_type >::invoke( n, d, e, df, ef, b, x, ferr, berr,
             info, work );
     return info;
 }
@@ -286,7 +283,7 @@
         VectorBERR& berr ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    ptrfs_impl< value_type >::compute( n, d, e, df, ef, b, x, ferr, berr,
+    ptrfs_impl< value_type >::invoke( n, d, e, df, ef, b, x, ferr, berr,
             info, optimal_workspace() );
     return info;
 }
@@ -299,7 +296,7 @@
         VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    ptrfs_impl< value_type >::compute( uplo, n, d, e, df, ef, b, x, ferr,
+    ptrfs_impl< value_type >::invoke( uplo, n, d, e, df, ef, b, x, ferr,
             berr, info, work );
     return info;
 }
@@ -313,7 +310,7 @@
         VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    ptrfs_impl< value_type >::compute( uplo, n, d, e, df, ef, b, x, ferr,
+    ptrfs_impl< value_type >::invoke( uplo, n, d, e, df, ef, b, x, ferr,
             berr, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pttrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pttrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/pttrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_PTTRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -67,12 +65,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename VectorD, typename VectorE, typename MatrixB >
-    static void compute( integer_t const n, VectorD& d, VectorE& e,
-            MatrixB& b, integer_t& info ) {
+    static void invoke( integer_t const n, VectorD& d, VectorE& e, MatrixB& b,
+            integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorD >::value_type, typename traits::vector_traits<
                 VectorE >::value_type >::value) );
@@ -97,11 +95,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename VectorD, typename VectorE, typename MatrixB >
-    static void compute( char const uplo, integer_t const n, VectorD& d,
+    static void invoke( char const uplo, integer_t const n, VectorD& d,
             VectorE& e, MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorE >::value_type, typename traits::matrix_traits<
@@ -125,7 +123,7 @@
         MatrixB& b ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    pttrs_impl< value_type >::compute( n, d, e, b, info );
+    pttrs_impl< value_type >::invoke( n, d, e, b, info );
     return info;
 }
 // template function to call pttrs
@@ -134,7 +132,7 @@
         VectorE& e, MatrixB& b ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    pttrs_impl< value_type >::compute( uplo, n, d, e, b, info );
+    pttrs_impl< value_type >::invoke( uplo, n, d, e, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbgst.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbgst.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbgst.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_SBGST_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -56,12 +54,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename MatrixX,
             typename WORK >
-    static void compute( char const vect, integer_t const n,
+    static void invoke( char const vect, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, MatrixX& x, integer_t& info, detail::workspace1<
             WORK > work ) {
@@ -90,21 +88,21 @@
 
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename MatrixX >
-    static void compute( char const vect, integer_t const n,
+    static void invoke( char const vect, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, MatrixX& x, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( vect, n, ka, kb, ab, bb, x, info, workspace( tmp_work ) );
+        invoke( vect, n, ka, kb, ab, bb, x, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename MatrixX >
-    static void compute( char const vect, integer_t const n,
+    static void invoke( char const vect, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, MatrixX& x, integer_t& info,
             optimal_workspace work ) {
-        compute( vect, n, ka, kb, ab, bb, x, info, minimal_workspace() );
+        invoke( vect, n, ka, kb, ab, bb, x, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -121,7 +119,7 @@
         MatrixX& x, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbgst_impl< value_type >::compute( vect, n, ka, kb, ab, bb, x, info,
+    sbgst_impl< value_type >::invoke( vect, n, ka, kb, ab, bb, x, info,
             work );
     return info;
 }
@@ -133,7 +131,7 @@
         MatrixX& x ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbgst_impl< value_type >::compute( vect, n, ka, kb, ab, bb, x, info,
+    sbgst_impl< value_type >::invoke( vect, n, ka, kb, ab, bb, x, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbtrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbtrd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sbtrd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_SBTRD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -56,12 +54,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename VectorD, typename VectorE,
             typename MatrixQ, typename WORK >
-    static void compute( char const vect, integer_t const n,
+    static void invoke( char const vect, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorD& d, VectorE& e,
             MatrixQ& q, integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -92,20 +90,20 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename VectorD, typename VectorE,
             typename MatrixQ >
-    static void compute( char const vect, integer_t const n,
+    static void invoke( char const vect, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorD& d, VectorE& e,
             MatrixQ& q, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( vect, n, kd, ab, d, e, q, info, workspace( tmp_work ) );
+        invoke( vect, n, kd, ab, d, e, q, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename VectorD, typename VectorE,
             typename MatrixQ >
-    static void compute( char const vect, integer_t const n,
+    static void invoke( char const vect, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorD& d, VectorE& e,
             MatrixQ& q, integer_t& info, optimal_workspace work ) {
-        compute( vect, n, kd, ab, d, e, q, info, minimal_workspace() );
+        invoke( vect, n, kd, ab, d, e, q, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -122,7 +120,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbtrd_impl< value_type >::compute( vect, n, kd, ab, d, e, q, info,
+    sbtrd_impl< value_type >::invoke( vect, n, kd, ab, d, e, q, info,
             work );
     return info;
 }
@@ -135,7 +133,7 @@
         MatrixQ& q ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbtrd_impl< value_type >::compute( vect, n, kd, ab, d, e, q, info,
+    sbtrd_impl< value_type >::invoke( vect, n, kd, ab, d, e, q, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sprfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sprfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sprfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_SPRFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -87,14 +85,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename IWORK >
-    static void compute( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
@@ -141,23 +138,23 @@
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( n, ap, afp, ipiv, b, x, ferr, berr, info,
-                workspace( tmp_work, tmp_iwork ) );
+        invoke( n, ap, afp, ipiv, b, x, ferr, berr, info, workspace( tmp_work,
+                tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, optimal_workspace work ) {
-        compute( n, ap, afp, ipiv, b, x, ferr, berr, info,
+        invoke( n, ap, afp, ipiv, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -176,14 +173,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename RWORK >
-    static void compute( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, detail::workspace2< WORK,
             RWORK > work ) {
@@ -227,23 +223,23 @@
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( n, ap, afp, ipiv, b, x, ferr, berr, info,
-                workspace( tmp_work, tmp_rwork ) );
+        invoke( n, ap, afp, ipiv, b, x, ferr, berr, info, workspace( tmp_work,
+                tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( integer_t const n, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, optimal_workspace work ) {
-        compute( n, ap, afp, ipiv, b, x, ferr, berr, info,
+        invoke( n, ap, afp, ipiv, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -266,8 +262,8 @@
         VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    sprfs_impl< value_type >::compute( n, ap, afp, ipiv, b, x, ferr,
-            berr, info, work );
+    sprfs_impl< value_type >::invoke( n, ap, afp, ipiv, b, x, ferr, berr,
+            info, work );
     return info;
 }
 
@@ -280,8 +276,8 @@
         VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    sprfs_impl< value_type >::compute( n, ap, afp, ipiv, b, x, ferr,
-            berr, info, optimal_workspace() );
+    sprfs_impl< value_type >::invoke( n, ap, afp, ipiv, b, x, ferr, berr,
+            info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sptrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_SPTRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -62,12 +60,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAP, typename VectorIPIV, typename MatrixB >
-    static void compute( char const uplo, integer_t const n, MatrixAP& ap,
+    static void invoke( char const uplo, integer_t const n, MatrixAP& ap,
             VectorIPIV& ipiv, MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixAP >::value_type, typename traits::matrix_traits<
@@ -92,7 +89,7 @@
         VectorIPIV& ipiv, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    sptrs_impl< value_type >::compute( uplo, n, ap, ipiv, b, info );
+    sptrs_impl< value_type >::invoke( uplo, n, ap, ipiv, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stebz.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stebz.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stebz.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_STEBZ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -60,18 +58,18 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename VectorIBLOCK, typename VectorISPLIT, typename WORK,
             typename IWORK >
-    static void compute( char const range, char const order,
-            integer_t const n, real_type const vl, real_type const vu,
-            integer_t const il, integer_t const iu, real_type const abstol,
-            VectorD& d, VectorE& e, integer_t& m, integer_t& nsplit,
-            VectorW& w, VectorIBLOCK& iblock, VectorISPLIT& isplit,
-            integer_t& info, detail::workspace2< WORK, IWORK > work ) {
+    static void invoke( char const range, char const order, integer_t const n,
+            real_type const vl, real_type const vu, integer_t const il,
+            integer_t const iu, real_type const abstol, VectorD& d,
+            VectorE& e, integer_t& m, integer_t& nsplit, VectorW& w,
+            VectorIBLOCK& iblock, VectorISPLIT& isplit, integer_t& info,
+            detail::workspace2< WORK, IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorD >::value_type, typename traits::vector_traits<
                 VectorE >::value_type >::value) );
@@ -104,28 +102,28 @@
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename VectorIBLOCK, typename VectorISPLIT >
-    static void compute( char const range, char const order,
-            integer_t const n, real_type const vl, real_type const vu,
-            integer_t const il, integer_t const iu, real_type const abstol,
-            VectorD& d, VectorE& e, integer_t& m, integer_t& nsplit,
-            VectorW& w, VectorIBLOCK& iblock, VectorISPLIT& isplit,
-            integer_t& info, minimal_workspace work ) {
+    static void invoke( char const range, char const order, integer_t const n,
+            real_type const vl, real_type const vu, integer_t const il,
+            integer_t const iu, real_type const abstol, VectorD& d,
+            VectorE& e, integer_t& m, integer_t& nsplit, VectorW& w,
+            VectorIBLOCK& iblock, VectorISPLIT& isplit, integer_t& info,
+            minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( range, order, n, vl, vu, il, iu, abstol, d, e, m, nsplit, w,
+        invoke( range, order, n, vl, vu, il, iu, abstol, d, e, m, nsplit, w,
                 iblock, isplit, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename VectorIBLOCK, typename VectorISPLIT >
-    static void compute( char const range, char const order,
-            integer_t const n, real_type const vl, real_type const vu,
-            integer_t const il, integer_t const iu, real_type const abstol,
-            VectorD& d, VectorE& e, integer_t& m, integer_t& nsplit,
-            VectorW& w, VectorIBLOCK& iblock, VectorISPLIT& isplit,
-            integer_t& info, optimal_workspace work ) {
-        compute( range, order, n, vl, vu, il, iu, abstol, d, e, m, nsplit, w,
+    static void invoke( char const range, char const order, integer_t const n,
+            real_type const vl, real_type const vu, integer_t const il,
+            integer_t const iu, real_type const abstol, VectorD& d,
+            VectorE& e, integer_t& m, integer_t& nsplit, VectorW& w,
+            VectorIBLOCK& iblock, VectorISPLIT& isplit, integer_t& info,
+            optimal_workspace work ) {
+        invoke( range, order, n, vl, vu, il, iu, abstol, d, e, m, nsplit, w,
                 iblock, isplit, info, minimal_workspace() );
     }
 
@@ -152,7 +150,7 @@
         VectorISPLIT& isplit, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stebz_impl< value_type >::compute( range, order, n, vl, vu, il, iu,
+    stebz_impl< value_type >::invoke( range, order, n, vl, vu, il, iu,
             abstol, d, e, m, nsplit, w, iblock, isplit, info, work );
     return info;
 }
@@ -170,7 +168,7 @@
         VectorISPLIT& isplit ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stebz_impl< value_type >::compute( range, order, n, vl, vu, il, iu,
+    stebz_impl< value_type >::invoke( range, order, n, vl, vu, il, iu,
             abstol, d, e, m, nsplit, w, iblock, isplit, info,
             optimal_workspace() );
     return info;
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stedc.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stedc.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stedc.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_STEDC_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -82,12 +80,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ,
             typename WORK, typename IWORK >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -114,18 +112,18 @@
 
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( compz,
                 n ) );
-        compute( compz, n, d, e, z, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( compz, n, d, e, z, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         integer_t opt_size_iwork;
@@ -136,7 +134,7 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( compz, n, d, e, z, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( compz, n, d, e, z, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -154,12 +152,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ,
             typename WORK, typename RWORK, typename IWORK >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, detail::workspace3< WORK,
             RWORK, IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -187,7 +185,7 @@
 
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
@@ -195,13 +193,13 @@
                 $CALL_MIN_SIZE ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( compz,
                 n ) );
-        compute( compz, n, d, e, z, info, workspace( tmp_work, tmp_rwork,
+        invoke( compz, n, d, e, z, info, workspace( tmp_work, tmp_rwork,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         real_type opt_size_rwork;
@@ -215,7 +213,7 @@
         traits::detail::array< real_type > tmp_rwork(
                 traits::detail::to_int( opt_size_rwork ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( compz, n, d, e, z, info, workspace( tmp_work, tmp_rwork,
+        invoke( compz, n, d, e, z, info, workspace( tmp_work, tmp_rwork,
                 tmp_iwork ) );
     }
 
@@ -240,7 +238,7 @@
         VectorE& e, MatrixZ& z, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stedc_impl< value_type >::compute( compz, n, d, e, z, info, work );
+    stedc_impl< value_type >::invoke( compz, n, d, e, z, info, work );
     return info;
 }
 
@@ -250,7 +248,7 @@
         VectorE& e, MatrixZ& z ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stedc_impl< value_type >::compute( compz, n, d, e, z, info,
+    stedc_impl< value_type >::invoke( compz, n, d, e, z, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stegr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stegr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stegr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_STEGR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -89,13 +87,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename MatrixZ, typename VectorISUPPZ, typename WORK,
             typename IWORK >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             VectorD& d, VectorE& e, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz,
@@ -132,7 +130,7 @@
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename MatrixZ, typename VectorISUPPZ >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             VectorD& d, VectorE& e, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz,
@@ -141,14 +139,14 @@
                 $CALL_MIN_SIZE ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 $CALL_MIN_SIZE ) );
-        compute( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z,
-                isuppz, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, isuppz,
+                info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename MatrixZ, typename VectorISUPPZ >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             VectorD& d, VectorE& e, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz,
@@ -163,8 +161,8 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z,
-                isuppz, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, isuppz,
+                info, workspace( tmp_work, tmp_iwork ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -182,13 +180,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename MatrixZ, typename VectorISUPPZ, typename WORK,
             typename IWORK >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             VectorD& d, VectorE& e, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz,
@@ -222,7 +220,7 @@
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename MatrixZ, typename VectorISUPPZ >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             VectorD& d, VectorE& e, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz,
@@ -231,14 +229,14 @@
                 $CALL_MIN_SIZE ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 $CALL_MIN_SIZE ) );
-        compute( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z,
-                isuppz, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, isuppz,
+                info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename MatrixZ, typename VectorISUPPZ >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             VectorD& d, VectorE& e, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz,
@@ -253,8 +251,8 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z,
-                isuppz, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, isuppz,
+                info, workspace( tmp_work, tmp_iwork ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -280,7 +278,7 @@
         Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stegr_impl< value_type >::compute( jobz, range, n, d, e, vl, vu, il,
+    stegr_impl< value_type >::invoke( jobz, range, n, d, e, vl, vu, il,
             iu, abstol, m, w, z, isuppz, info, work );
     return info;
 }
@@ -297,7 +295,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stegr_impl< value_type >::compute( jobz, range, n, d, e, vl, vu, il,
+    stegr_impl< value_type >::invoke( jobz, range, n, d, e, vl, vu, il,
             iu, abstol, m, w, z, isuppz, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stein.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stein.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/stein.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_STEIN_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -78,13 +76,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename VectorIBLOCK, typename VectorISPLIT, typename MatrixZ,
             typename VectorIFAIL, typename WORK, typename IWORK >
-    static void compute( integer_t const n, VectorD& d, VectorE& e,
+    static void invoke( integer_t const n, VectorD& d, VectorE& e,
             integer_t const m, VectorW& w, VectorIBLOCK& iblock,
             VectorISPLIT& isplit, MatrixZ& z, VectorIFAIL& ifail,
             integer_t& info, detail::workspace2< WORK, IWORK > work ) {
@@ -127,13 +125,13 @@
     template< typename VectorD, typename VectorE, typename VectorW,
             typename VectorIBLOCK, typename VectorISPLIT, typename MatrixZ,
             typename VectorIFAIL >
-    static void compute( integer_t const n, VectorD& d, VectorE& e,
+    static void invoke( integer_t const n, VectorD& d, VectorE& e,
             integer_t const m, VectorW& w, VectorIBLOCK& iblock,
             VectorISPLIT& isplit, MatrixZ& z, VectorIFAIL& ifail,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( n, d, e, m, w, iblock, isplit, z, ifail, info,
+        invoke( n, d, e, m, w, iblock, isplit, z, ifail, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -141,11 +139,11 @@
     template< typename VectorD, typename VectorE, typename VectorW,
             typename VectorIBLOCK, typename VectorISPLIT, typename MatrixZ,
             typename VectorIFAIL >
-    static void compute( integer_t const n, VectorD& d, VectorE& e,
+    static void invoke( integer_t const n, VectorD& d, VectorE& e,
             integer_t const m, VectorW& w, VectorIBLOCK& iblock,
             VectorISPLIT& isplit, MatrixZ& z, VectorIFAIL& ifail,
             integer_t& info, optimal_workspace work ) {
-        compute( n, d, e, m, w, iblock, isplit, z, ifail, info,
+        invoke( n, d, e, m, w, iblock, isplit, z, ifail, info,
                 minimal_workspace() );
     }
 
@@ -164,13 +162,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename VectorIBLOCK, typename VectorISPLIT, typename MatrixZ,
             typename VectorIFAIL, typename WORK, typename IWORK >
-    static void compute( integer_t const n, VectorD& d, VectorE& e,
+    static void invoke( integer_t const n, VectorD& d, VectorE& e,
             integer_t const m, VectorW& w, VectorIBLOCK& iblock,
             VectorISPLIT& isplit, MatrixZ& z, VectorIFAIL& ifail,
             integer_t& info, detail::workspace2< WORK, IWORK > work ) {
@@ -210,13 +208,13 @@
     template< typename VectorD, typename VectorE, typename VectorW,
             typename VectorIBLOCK, typename VectorISPLIT, typename MatrixZ,
             typename VectorIFAIL >
-    static void compute( integer_t const n, VectorD& d, VectorE& e,
+    static void invoke( integer_t const n, VectorD& d, VectorE& e,
             integer_t const m, VectorW& w, VectorIBLOCK& iblock,
             VectorISPLIT& isplit, MatrixZ& z, VectorIFAIL& ifail,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( n, d, e, m, w, iblock, isplit, z, ifail, info,
+        invoke( n, d, e, m, w, iblock, isplit, z, ifail, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -224,11 +222,11 @@
     template< typename VectorD, typename VectorE, typename VectorW,
             typename VectorIBLOCK, typename VectorISPLIT, typename MatrixZ,
             typename VectorIFAIL >
-    static void compute( integer_t const n, VectorD& d, VectorE& e,
+    static void invoke( integer_t const n, VectorD& d, VectorE& e,
             integer_t const m, VectorW& w, VectorIBLOCK& iblock,
             VectorISPLIT& isplit, MatrixZ& z, VectorIFAIL& ifail,
             integer_t& info, optimal_workspace work ) {
-        compute( n, d, e, m, w, iblock, isplit, z, ifail, info,
+        invoke( n, d, e, m, w, iblock, isplit, z, ifail, info,
                 minimal_workspace() );
     }
 
@@ -252,7 +250,7 @@
         Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stein_impl< value_type >::compute( n, d, e, m, w, iblock, isplit, z,
+    stein_impl< value_type >::invoke( n, d, e, m, w, iblock, isplit, z,
             ifail, info, work );
     return info;
 }
@@ -266,7 +264,7 @@
         VectorISPLIT& isplit, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stein_impl< value_type >::compute( n, d, e, m, w, iblock, isplit, z,
+    stein_impl< value_type >::invoke( n, d, e, m, w, iblock, isplit, z,
             ifail, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/steqr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/steqr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/steqr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_STEQR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -71,12 +69,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ,
             typename WORK >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -98,18 +96,18 @@
 
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( compz, n, d, e, z, info, workspace( tmp_work ) );
+        invoke( compz, n, d, e, z, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, optimal_workspace work ) {
-        compute( compz, n, d, e, z, info, minimal_workspace() );
+        invoke( compz, n, d, e, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -123,12 +121,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ,
             typename WORK >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -147,18 +145,18 @@
 
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( compz, n, d, e, z, info, workspace( tmp_work ) );
+        invoke( compz, n, d, e, z, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const compz, integer_t const n, VectorD& d,
+    static void invoke( char const compz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, optimal_workspace work ) {
-        compute( compz, n, d, e, z, info, minimal_workspace() );
+        invoke( compz, n, d, e, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -174,7 +172,7 @@
         VectorE& e, MatrixZ& z, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    steqr_impl< value_type >::compute( compz, n, d, e, z, info, work );
+    steqr_impl< value_type >::invoke( compz, n, d, e, z, info, work );
     return info;
 }
 
@@ -184,7 +182,7 @@
         VectorE& e, MatrixZ& z ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    steqr_impl< value_type >::compute( compz, n, d, e, z, info,
+    steqr_impl< value_type >::invoke( compz, n, d, e, z, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sterf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sterf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sterf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_STERF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -48,11 +46,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename VectorD, typename VectorE >
-    static void compute( integer_t const n, VectorD& d, VectorE& e,
+    static void invoke( integer_t const n, VectorD& d, VectorE& e,
             integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorD >::value_type, typename traits::vector_traits<
@@ -70,7 +68,7 @@
 inline integer_t sterf( integer_t const n, VectorD& d, VectorE& e ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    sterf_impl< value_type >::compute( n, d, e, info );
+    sterf_impl< value_type >::invoke( n, d, e, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sycon.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_SYCON_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -75,13 +73,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename WORK,
             typename IWORK >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             real_type const anorm, real_type& rcond, integer_t& info,
             detail::workspace2< WORK, IWORK > work ) {
         BOOST_ASSERT( uplo == 'U' || uplo == 'L' );
@@ -103,23 +100,23 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             real_type const anorm, real_type& rcond, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( uplo, a, ipiv, anorm, rcond, info, workspace( tmp_work,
+        invoke( uplo, a, ipiv, anorm, rcond, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             real_type const anorm, real_type& rcond, integer_t& info,
             optimal_workspace work ) {
-        compute( uplo, a, ipiv, anorm, rcond, info, minimal_workspace() );
+        invoke( uplo, a, ipiv, anorm, rcond, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -137,12 +134,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename WORK >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             real_type const anorm, real_type& rcond, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_ASSERT( uplo == 'U' || uplo == 'L' );
@@ -161,20 +157,20 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             real_type const anorm, real_type& rcond, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
-        compute( uplo, a, ipiv, anorm, rcond, info, workspace( tmp_work ) );
+        invoke( uplo, a, ipiv, anorm, rcond, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             real_type const anorm, real_type& rcond, integer_t& info,
             optimal_workspace work ) {
-        compute( uplo, a, ipiv, anorm, rcond, info, minimal_workspace() );
+        invoke( uplo, a, ipiv, anorm, rcond, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -191,7 +187,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sycon_impl< value_type >::compute( uplo, a, ipiv, anorm, rcond, info,
+    sycon_impl< value_type >::invoke( uplo, a, ipiv, anorm, rcond, info,
             work );
     return info;
 }
@@ -203,7 +199,7 @@
         typename traits::matrix_traits< MatrixA >::value_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sycon_impl< value_type >::compute( uplo, a, ipiv, anorm, rcond, info,
+    sycon_impl< value_type >::invoke( uplo, a, ipiv, anorm, rcond, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sygst.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sygst.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sygst.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_SYGST_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -50,12 +48,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename MatrixB >
-    static void compute( integer_t const itype, integer_t const n, MatrixA& a,
+    static void invoke( integer_t const itype, integer_t const n, MatrixA& a,
             MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -79,7 +76,7 @@
         MatrixA& a, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sygst_impl< value_type >::compute( itype, n, a, b, info );
+    sygst_impl< value_type >::invoke( itype, n, a, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/syrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/syrfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/syrfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_SYRFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -87,14 +85,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename IWORK >
-    static void compute( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
+    static void invoke( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, detail::workspace2< WORK, IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -148,14 +145,14 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
+    static void invoke( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( a, af, ipiv, b, x, ferr, berr, info, workspace( tmp_work,
+        invoke( a, af, ipiv, b, x, ferr, berr, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
@@ -163,10 +160,10 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
+    static void invoke( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, optimal_workspace work ) {
-        compute( a, af, ipiv, b, x, ferr, berr, info, minimal_workspace() );
+        invoke( a, af, ipiv, b, x, ferr, berr, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -184,14 +181,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename RWORK >
-    static void compute( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
+    static void invoke( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, detail::workspace2< WORK, RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -242,14 +238,14 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
+    static void invoke( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( a, af, ipiv, b, x, ferr, berr, info, workspace( tmp_work,
+        invoke( a, af, ipiv, b, x, ferr, berr, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
@@ -257,10 +253,10 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
+    static void invoke( MatrixA& a, MatrixAF& af, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, optimal_workspace work ) {
-        compute( a, af, ipiv, b, x, ferr, berr, info, minimal_workspace() );
+        invoke( a, af, ipiv, b, x, ferr, berr, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -282,7 +278,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    syrfs_impl< value_type >::compute( a, af, ipiv, b, x, ferr, berr,
+    syrfs_impl< value_type >::invoke( a, af, ipiv, b, x, ferr, berr,
             info, work );
     return info;
 }
@@ -295,7 +291,7 @@
         MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    syrfs_impl< value_type >::compute( a, af, ipiv, b, x, ferr, berr,
+    syrfs_impl< value_type >::invoke( a, af, ipiv, b, x, ferr, berr,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_SYTRD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -53,12 +51,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAU& tau,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAU& tau,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -91,17 +89,17 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAU >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAU& tau,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAU& tau,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( a, d, e, tau, info, workspace( tmp_work ) );
+        invoke( a, d, e, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorD, typename VectorE,
             typename VectorTAU >
-    static void compute( MatrixA& a, VectorD& d, VectorE& e, VectorTAU& tau,
+    static void invoke( MatrixA& a, VectorD& d, VectorE& e, VectorTAU& tau,
             integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         detail::sytrd( traits::matrix_uplo_tag(a),
@@ -111,7 +109,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, d, e, tau, info, workspace( tmp_work ) );
+        invoke( a, d, e, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -127,7 +125,7 @@
         VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sytrd_impl< value_type >::compute( a, d, e, tau, info, work );
+    sytrd_impl< value_type >::invoke( a, d, e, tau, info, work );
     return info;
 }
 
@@ -138,7 +136,7 @@
         VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sytrd_impl< value_type >::compute( a, d, e, tau, info,
+    sytrd_impl< value_type >::invoke( a, d, e, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_SYTRF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -72,12 +70,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename WORK >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
                 traits::matrix_uplo_tag(a) == 'L' );
@@ -95,16 +92,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( a, ipiv, info, workspace( tmp_work ) );
+        invoke( a, ipiv, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
         detail::sytrf( traits::matrix_uplo_tag(a),
@@ -113,7 +110,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, ipiv, info, workspace( tmp_work ) );
+        invoke( a, ipiv, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -127,12 +124,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename WORK >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
                 traits::matrix_uplo_tag(a) == 'L' );
@@ -150,16 +146,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( a, ipiv, info, workspace( tmp_work ) );
+        invoke( a, ipiv, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
         detail::sytrf( traits::matrix_uplo_tag(a),
@@ -168,7 +164,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, ipiv, info, workspace( tmp_work ) );
+        invoke( a, ipiv, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -182,7 +178,7 @@
 inline integer_t sytrf( MatrixA& a, VectorIPIV& ipiv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sytrf_impl< value_type >::compute( a, ipiv, info, work );
+    sytrf_impl< value_type >::invoke( a, ipiv, info, work );
     return info;
 }
 
@@ -191,7 +187,7 @@
 inline integer_t sytrf( MatrixA& a, VectorIPIV& ipiv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sytrf_impl< value_type >::compute( a, ipiv, info,
+    sytrf_impl< value_type >::invoke( a, ipiv, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytri.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytri.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_SYTRI_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -71,12 +69,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename WORK >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_ASSERT( uplo == 'U' || uplo == 'L' );
         BOOST_ASSERT( traits::matrix_num_columns(a) >= 0 );
@@ -94,18 +91,18 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
-        compute( uplo, a, ipiv, info, workspace( tmp_work ) );
+        invoke( uplo, a, ipiv, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             integer_t& info, optimal_workspace work ) {
-        compute( uplo, a, ipiv, info, minimal_workspace() );
+        invoke( uplo, a, ipiv, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -119,12 +116,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::pivot > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename WORK >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_ASSERT( uplo == 'U' || uplo == 'L' );
         BOOST_ASSERT( traits::matrix_num_columns(a) >= 0 );
@@ -142,18 +138,18 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
-        compute( uplo, a, ipiv, info, workspace( tmp_work ) );
+        invoke( uplo, a, ipiv, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             integer_t& info, optimal_workspace work ) {
-        compute( uplo, a, ipiv, info, minimal_workspace() );
+        invoke( uplo, a, ipiv, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -168,7 +164,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sytri_impl< value_type >::compute( uplo, a, ipiv, info, work );
+    sytri_impl< value_type >::invoke( uplo, a, ipiv, info, work );
     return info;
 }
 
@@ -177,7 +173,7 @@
 inline integer_t sytri( char const uplo, MatrixA& a, VectorIPIV& ipiv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sytri_impl< value_type >::compute( uplo, a, ipiv, info,
+    sytri_impl< value_type >::invoke( uplo, a, ipiv, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/sytrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_SYTRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -65,12 +63,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB >
-    static void compute( char const uplo, MatrixA& a, VectorIPIV& ipiv,
+    static void invoke( char const uplo, MatrixA& a, VectorIPIV& ipiv,
             MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -99,7 +96,7 @@
         MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sytrs_impl< value_type >::compute( uplo, a, ipiv, b, info );
+    sytrs_impl< value_type >::invoke( uplo, a, ipiv, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbcon.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TBCON_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -77,11 +75,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename WORK, typename IWORK >
-    static void compute( char const norm, char const uplo, char const diag,
+    static void invoke( char const norm, char const uplo, char const diag,
             integer_t const n, integer_t const kd, MatrixAB& ab,
             real_type& rcond, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
@@ -103,21 +101,21 @@
 
     // minimal workspace specialization
     template< typename MatrixAB >
-    static void compute( char const norm, char const uplo, char const diag,
+    static void invoke( char const norm, char const uplo, char const diag,
             integer_t const n, integer_t const kd, MatrixAB& ab,
             real_type& rcond, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( norm, uplo, diag, n, kd, ab, rcond, info,
-                workspace( tmp_work, tmp_iwork ) );
+        invoke( norm, uplo, diag, n, kd, ab, rcond, info, workspace( tmp_work,
+                tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB >
-    static void compute( char const norm, char const uplo, char const diag,
+    static void invoke( char const norm, char const uplo, char const diag,
             integer_t const n, integer_t const kd, MatrixAB& ab,
             real_type& rcond, integer_t& info, optimal_workspace work ) {
-        compute( norm, uplo, diag, n, kd, ab, rcond, info,
+        invoke( norm, uplo, diag, n, kd, ab, rcond, info,
                 minimal_workspace() );
     }
 
@@ -136,11 +134,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename WORK, typename RWORK >
-    static void compute( char const norm, char const uplo, char const diag,
+    static void invoke( char const norm, char const uplo, char const diag,
             integer_t const n, integer_t const kd, MatrixAB& ab,
             real_type& rcond, integer_t& info, detail::workspace2< WORK,
             RWORK > work ) {
@@ -162,21 +160,21 @@
 
     // minimal workspace specialization
     template< typename MatrixAB >
-    static void compute( char const norm, char const uplo, char const diag,
+    static void invoke( char const norm, char const uplo, char const diag,
             integer_t const n, integer_t const kd, MatrixAB& ab,
             real_type& rcond, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( norm, uplo, diag, n, kd, ab, rcond, info,
-                workspace( tmp_work, tmp_rwork ) );
+        invoke( norm, uplo, diag, n, kd, ab, rcond, info, workspace( tmp_work,
+                tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB >
-    static void compute( char const norm, char const uplo, char const diag,
+    static void invoke( char const norm, char const uplo, char const diag,
             integer_t const n, integer_t const kd, MatrixAB& ab,
             real_type& rcond, integer_t& info, optimal_workspace work ) {
-        compute( norm, uplo, diag, n, kd, ab, rcond, info,
+        invoke( norm, uplo, diag, n, kd, ab, rcond, info,
                 minimal_workspace() );
     }
 
@@ -198,8 +196,8 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    tbcon_impl< value_type >::compute( norm, uplo, diag, n, kd, ab,
-            rcond, info, work );
+    tbcon_impl< value_type >::invoke( norm, uplo, diag, n, kd, ab, rcond,
+            info, work );
     return info;
 }
 
@@ -210,8 +208,8 @@
         typename traits::matrix_traits< MatrixAB >::value_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    tbcon_impl< value_type >::compute( norm, uplo, diag, n, kd, ab,
-            rcond, info, optimal_workspace() );
+    tbcon_impl< value_type >::invoke( norm, uplo, diag, n, kd, ab, rcond,
+            info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbrfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbrfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TBRFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -87,14 +85,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR, typename WORK,
             typename IWORK >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, integer_t const kd, MatrixAB& ab, MatrixB& b,
             MatrixX& x, VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, IWORK > work ) {
@@ -138,24 +135,24 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, integer_t const kd, MatrixAB& ab, MatrixB& b,
             MatrixX& x, VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( uplo, trans, diag, n, kd, ab, b, x, ferr, berr, info,
+        invoke( uplo, trans, diag, n, kd, ab, b, x, ferr, berr, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, integer_t const kd, MatrixAB& ab, MatrixB& b,
             MatrixX& x, VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( uplo, trans, diag, n, kd, ab, b, x, ferr, berr, info,
+        invoke( uplo, trans, diag, n, kd, ab, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -174,14 +171,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR, typename WORK,
             typename RWORK >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, integer_t const kd, MatrixAB& ab, MatrixB& b,
             MatrixX& x, VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
@@ -222,24 +218,24 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, integer_t const kd, MatrixAB& ab, MatrixB& b,
             MatrixX& x, VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( uplo, trans, diag, n, kd, ab, b, x, ferr, berr, info,
+        invoke( uplo, trans, diag, n, kd, ab, b, x, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, integer_t const kd, MatrixAB& ab, MatrixB& b,
             MatrixX& x, VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( uplo, trans, diag, n, kd, ab, b, x, ferr, berr, info,
+        invoke( uplo, trans, diag, n, kd, ab, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -262,8 +258,8 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    tbrfs_impl< value_type >::compute( uplo, trans, diag, n, kd, ab, b,
-            x, ferr, berr, info, work );
+    tbrfs_impl< value_type >::invoke( uplo, trans, diag, n, kd, ab, b, x,
+            ferr, berr, info, work );
     return info;
 }
 
@@ -275,8 +271,8 @@
         MatrixB& b, MatrixX& x, VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    tbrfs_impl< value_type >::compute( uplo, trans, diag, n, kd, ab, b,
-            x, ferr, berr, info, optimal_workspace() );
+    tbrfs_impl< value_type >::invoke( uplo, trans, diag, n, kd, ab, b, x,
+            ferr, berr, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbtrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbtrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tbtrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TBTRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -70,12 +68,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAB, typename MatrixB >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, integer_t const kd, MatrixAB& ab, MatrixB& b,
             integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -104,7 +101,7 @@
         MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    tbtrs_impl< value_type >::compute( uplo, trans, diag, n, kd, ab, b,
+    tbtrs_impl< value_type >::invoke( uplo, trans, diag, n, kd, ab, b,
             info );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgevc.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgevc.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgevc.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TGEVC_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -87,12 +85,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorSELECT, typename MatrixS, typename MatrixP,
             typename MatrixVL, typename MatrixVR, typename WORK >
-    static void compute( char const side, char const howmny,
+    static void invoke( char const side, char const howmny,
             VectorSELECT& select, integer_t const n, MatrixS& s, MatrixP& p,
             MatrixVL& vl, MatrixVR& vr, integer_t const mm, integer_t& m,
             integer_t& info, detail::workspace1< WORK > work ) {
@@ -124,23 +122,23 @@
     // minimal workspace specialization
     template< typename VectorSELECT, typename MatrixS, typename MatrixP,
             typename MatrixVL, typename MatrixVR >
-    static void compute( char const side, char const howmny,
+    static void invoke( char const side, char const howmny,
             VectorSELECT& select, integer_t const n, MatrixS& s, MatrixP& p,
             MatrixVL& vl, MatrixVR& vr, integer_t const mm, integer_t& m,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( side, howmny, select, n, s, p, vl, vr, mm, m, info,
+        invoke( side, howmny, select, n, s, p, vl, vr, mm, m, info,
                 workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorSELECT, typename MatrixS, typename MatrixP,
             typename MatrixVL, typename MatrixVR >
-    static void compute( char const side, char const howmny,
+    static void invoke( char const side, char const howmny,
             VectorSELECT& select, integer_t const n, MatrixS& s, MatrixP& p,
             MatrixVL& vl, MatrixVR& vr, integer_t const mm, integer_t& m,
             integer_t& info, optimal_workspace work ) {
-        compute( side, howmny, select, n, s, p, vl, vr, mm, m, info,
+        invoke( side, howmny, select, n, s, p, vl, vr, mm, m, info,
                 minimal_workspace() );
     }
 
@@ -155,13 +153,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorSELECT, typename MatrixS, typename MatrixP,
             typename MatrixVL, typename MatrixVR, typename WORK,
             typename RWORK >
-    static void compute( char const side, char const howmny,
+    static void invoke( char const side, char const howmny,
             VectorSELECT& select, integer_t const n, MatrixS& s, MatrixP& p,
             MatrixVL& vl, MatrixVR& vr, integer_t const mm, integer_t& m,
             integer_t& info, detail::workspace2< WORK, RWORK > work ) {
@@ -196,24 +194,24 @@
     // minimal workspace specialization
     template< typename VectorSELECT, typename MatrixS, typename MatrixP,
             typename MatrixVL, typename MatrixVR >
-    static void compute( char const side, char const howmny,
+    static void invoke( char const side, char const howmny,
             VectorSELECT& select, integer_t const n, MatrixS& s, MatrixP& p,
             MatrixVL& vl, MatrixVR& vr, integer_t const mm, integer_t& m,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( side, howmny, select, n, s, p, vl, vr, mm, m, info,
+        invoke( side, howmny, select, n, s, p, vl, vr, mm, m, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorSELECT, typename MatrixS, typename MatrixP,
             typename MatrixVL, typename MatrixVR >
-    static void compute( char const side, char const howmny,
+    static void invoke( char const side, char const howmny,
             VectorSELECT& select, integer_t const n, MatrixS& s, MatrixP& p,
             MatrixVL& vl, MatrixVR& vr, integer_t const mm, integer_t& m,
             integer_t& info, optimal_workspace work ) {
-        compute( side, howmny, select, n, s, p, vl, vr, mm, m, info,
+        invoke( side, howmny, select, n, s, p, vl, vr, mm, m, info,
                 minimal_workspace() );
     }
 
@@ -237,7 +235,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    tgevc_impl< value_type >::compute( side, howmny, select, n, s, p, vl,
+    tgevc_impl< value_type >::invoke( side, howmny, select, n, s, p, vl,
             vr, mm, m, info, work );
     return info;
 }
@@ -251,7 +249,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    tgevc_impl< value_type >::compute( side, howmny, select, n, s, p, vl,
+    tgevc_impl< value_type >::invoke( side, howmny, select, n, s, p, vl,
             vr, mm, m, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgexc.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgexc.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgexc.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TGEXC_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -84,13 +82,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename MatrixB, typename MatrixQ,
             typename MatrixZ >
-    static void compute( logical_t const wantq, logical_t const wantz,
+    static void invoke( logical_t const wantq, logical_t const wantz,
             integer_t const n, MatrixA& a, MatrixB& b, MatrixQ& q, MatrixZ& z,
             integer_t& ifst, integer_t& ilst, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -123,13 +120,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixQ,
             typename MatrixZ, $WORKSPACE_TYPENAMES >
-    static void compute( logical_t const wantq, logical_t const wantz,
+    static void invoke( logical_t const wantq, logical_t const wantz,
             integer_t const n, MatrixA& a, MatrixB& b, MatrixQ& q, MatrixZ& z,
             integer_t const ifst, integer_t& ilst, integer_t& info,
             detail::workspace$WORKSPACE_SIZE< $WORKSPACE_TYPES > work ) {
@@ -155,19 +151,19 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixQ,
             typename MatrixZ >
-    static void compute( logical_t const wantq, logical_t const wantz,
+    static void invoke( logical_t const wantq, logical_t const wantz,
             integer_t const n, MatrixA& a, MatrixB& b, MatrixQ& q, MatrixZ& z,
             integer_t const ifst, integer_t& ilst, integer_t& info,
             minimal_workspace work ) {
 $SETUP_MIN_WORKARRAYS_POST
-        compute( wantq, wantz, n, a, b, q, z, ifst, ilst, info,
+        invoke( wantq, wantz, n, a, b, q, z, ifst, ilst, info,
                 workspace( $TMP_WORKARRAYS ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixQ,
             typename MatrixZ >
-    static void compute( logical_t const wantq, logical_t const wantz,
+    static void invoke( logical_t const wantq, logical_t const wantz,
             integer_t const n, MatrixA& a, MatrixB& b, MatrixQ& q, MatrixZ& z,
             integer_t const ifst, integer_t& ilst, integer_t& info,
             optimal_workspace work ) {
@@ -186,7 +182,7 @@
         integer_t& ifst, integer_t& ilst ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    tgexc_impl< value_type >::compute( wantq, wantz, n, a, b, q, z, ifst,
+    tgexc_impl< value_type >::invoke( wantq, wantz, n, a, b, q, z, ifst,
             ilst, info );
     return info;
 }
@@ -198,7 +194,7 @@
         integer_t const ifst, integer_t& ilst, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    tgexc_impl< value_type >::compute( wantq, wantz, n, a, b, q, z, ifst,
+    tgexc_impl< value_type >::invoke( wantq, wantz, n, a, b, q, z, ifst,
             ilst, info, work );
     return info;
 }
@@ -211,7 +207,7 @@
         integer_t const ifst, integer_t& ilst ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    tgexc_impl< value_type >::compute( wantq, wantz, n, a, b, q, z, ifst,
+    tgexc_impl< value_type >::invoke( wantq, wantz, n, a, b, q, z, ifst,
             ilst, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsen.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsen.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsen.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TGSEN_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -106,15 +104,14 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorSELECT, typename MatrixA, typename MatrixB,
             typename VectorALPHAR, typename VectorALPHAI, typename VectorBETA,
             typename MatrixQ, typename MatrixZ, typename VectorDIF,
             typename WORK, typename IWORK >
-    static void compute( integer_t const ijob, logical_t const wantq,
+    static void invoke( integer_t const ijob, logical_t const wantq,
             logical_t const wantz, VectorSELECT& select, integer_t const n,
             MatrixA& a, MatrixB& b, VectorALPHAR& alphar,
             VectorALPHAI& alphai, VectorBETA& beta, MatrixQ& q, MatrixZ& z,
@@ -169,7 +166,7 @@
     template< typename VectorSELECT, typename MatrixA, typename MatrixB,
             typename VectorALPHAR, typename VectorALPHAI, typename VectorBETA,
             typename MatrixQ, typename MatrixZ, typename VectorDIF >
-    static void compute( integer_t const ijob, logical_t const wantq,
+    static void invoke( integer_t const ijob, logical_t const wantq,
             logical_t const wantz, VectorSELECT& select, integer_t const n,
             MatrixA& a, MatrixB& b, VectorALPHAR& alphar,
             VectorALPHAI& alphai, VectorBETA& beta, MatrixQ& q, MatrixZ& z,
@@ -179,7 +176,7 @@
                 $CALL_MIN_SIZE ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 $CALL_MIN_SIZE ) );
-        compute( ijob, wantq, wantz, select, n, a, b, alphar, alphai, beta, q,
+        invoke( ijob, wantq, wantz, select, n, a, b, alphar, alphai, beta, q,
                 z, m, pl, pr, dif, info, workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -187,7 +184,7 @@
     template< typename VectorSELECT, typename MatrixA, typename MatrixB,
             typename VectorALPHAR, typename VectorALPHAI, typename VectorBETA,
             typename MatrixQ, typename MatrixZ, typename VectorDIF >
-    static void compute( integer_t const ijob, logical_t const wantq,
+    static void invoke( integer_t const ijob, logical_t const wantq,
             logical_t const wantz, VectorSELECT& select, integer_t const n,
             MatrixA& a, MatrixB& b, VectorALPHAR& alphar,
             VectorALPHAI& alphai, VectorBETA& beta, MatrixQ& q, MatrixZ& z,
@@ -207,7 +204,7 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( ijob, wantq, wantz, select, n, a, b, alphar, alphai, beta, q,
+        invoke( ijob, wantq, wantz, select, n, a, b, alphar, alphai, beta, q,
                 z, m, pl, pr, dif, info, workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -226,15 +223,14 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorSELECT, typename MatrixA, typename MatrixB,
             typename VectorALPHA, typename VectorBETA, typename MatrixQ,
             typename MatrixZ, typename VectorDIF, typename WORK,
             typename IWORK >
-    static void compute( integer_t const ijob, logical_t const wantq,
+    static void invoke( integer_t const ijob, logical_t const wantq,
             logical_t const wantz, VectorSELECT& select, integer_t const n,
             MatrixA& a, MatrixB& b, VectorALPHA& alpha, VectorBETA& beta,
             MatrixQ& q, MatrixZ& z, integer_t& m, real_type& pl,
@@ -281,7 +277,7 @@
     template< typename VectorSELECT, typename MatrixA, typename MatrixB,
             typename VectorALPHA, typename VectorBETA, typename MatrixQ,
             typename MatrixZ, typename VectorDIF >
-    static void compute( integer_t const ijob, logical_t const wantq,
+    static void invoke( integer_t const ijob, logical_t const wantq,
             logical_t const wantz, VectorSELECT& select, integer_t const n,
             MatrixA& a, MatrixB& b, VectorALPHA& alpha, VectorBETA& beta,
             MatrixQ& q, MatrixZ& z, integer_t& m, real_type& pl,
@@ -291,15 +287,15 @@
                 $CALL_MIN_SIZE ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 $CALL_MIN_SIZE ) );
-        compute( ijob, wantq, wantz, select, n, a, b, alpha, beta, q, z, m,
-                pl, pr, dif, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( ijob, wantq, wantz, select, n, a, b, alpha, beta, q, z, m, pl,
+                pr, dif, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorSELECT, typename MatrixA, typename MatrixB,
             typename VectorALPHA, typename VectorBETA, typename MatrixQ,
             typename MatrixZ, typename VectorDIF >
-    static void compute( integer_t const ijob, logical_t const wantq,
+    static void invoke( integer_t const ijob, logical_t const wantq,
             logical_t const wantz, VectorSELECT& select, integer_t const n,
             MatrixA& a, MatrixB& b, VectorALPHA& alpha, VectorBETA& beta,
             MatrixQ& q, MatrixZ& z, integer_t& m, real_type& pl,
@@ -319,8 +315,8 @@
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( ijob, wantq, wantz, select, n, a, b, alpha, beta, q, z, m,
-                pl, pr, dif, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( ijob, wantq, wantz, select, n, a, b, alpha, beta, q, z, m, pl,
+                pr, dif, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -348,7 +344,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    tgsen_impl< value_type >::compute( ijob, wantq, wantz, select, n, a,
+    tgsen_impl< value_type >::invoke( ijob, wantq, wantz, select, n, a,
             b, alphar, alphai, beta, q, z, m, pl, pr, dif, info, work );
     return info;
 }
@@ -367,7 +363,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    tgsen_impl< value_type >::compute( ijob, wantq, wantz, select, n, a,
+    tgsen_impl< value_type >::invoke( ijob, wantq, wantz, select, n, a,
             b, alphar, alphai, beta, q, z, m, pl, pr, dif, info,
             optimal_workspace() );
     return info;
@@ -385,7 +381,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    tgsen_impl< value_type >::compute( ijob, wantq, wantz, select, n, a,
+    tgsen_impl< value_type >::invoke( ijob, wantq, wantz, select, n, a,
             b, alpha, beta, q, z, m, pl, pr, dif, info, work );
     return info;
 }
@@ -403,7 +399,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    tgsen_impl< value_type >::compute( ijob, wantq, wantz, select, n, a,
+    tgsen_impl< value_type >::invoke( ijob, wantq, wantz, select, n, a,
             b, alpha, beta, q, z, m, pl, pr, dif, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsja.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsja.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsja.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TGSJA_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -101,14 +99,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixU, typename MatrixV,
             typename MatrixQ, typename WORK >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             integer_t const k, integer_t const l, MatrixA& a, MatrixB& b,
             real_type const tola, real_type const tolb, VectorALPHA& alpha,
             VectorBETA& beta, MatrixU& u, MatrixV& v, MatrixQ& q,
@@ -163,14 +160,14 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixU, typename MatrixV,
             typename MatrixQ >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             integer_t const k, integer_t const l, MatrixA& a, MatrixB& b,
             real_type const tola, real_type const tolb, VectorALPHA& alpha,
             VectorBETA& beta, MatrixU& u, MatrixV& v, MatrixQ& q,
             integer_t& ncycle, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(b) ) );
-        compute( jobu, jobv, jobq, k, l, a, b, tola, tolb, alpha, beta, u, v,
+        invoke( jobu, jobv, jobq, k, l, a, b, tola, tolb, alpha, beta, u, v,
                 q, ncycle, info, workspace( tmp_work ) );
     }
 
@@ -178,12 +175,12 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixU, typename MatrixV,
             typename MatrixQ >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             integer_t const k, integer_t const l, MatrixA& a, MatrixB& b,
             real_type const tola, real_type const tolb, VectorALPHA& alpha,
             VectorBETA& beta, MatrixU& u, MatrixV& v, MatrixQ& q,
             integer_t& ncycle, integer_t& info, optimal_workspace work ) {
-        compute( jobu, jobv, jobq, k, l, a, b, tola, tolb, alpha, beta, u, v,
+        invoke( jobu, jobv, jobq, k, l, a, b, tola, tolb, alpha, beta, u, v,
                 q, ncycle, info, minimal_workspace() );
     }
 
@@ -198,14 +195,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixU, typename MatrixV,
             typename MatrixQ, typename WORK >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             integer_t const k, integer_t const l, MatrixA& a, MatrixB& b,
             real_type const tola, real_type const tolb, VectorALPHA& alpha,
             VectorBETA& beta, MatrixU& u, MatrixV& v, MatrixQ& q,
@@ -257,14 +253,14 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixU, typename MatrixV,
             typename MatrixQ >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             integer_t const k, integer_t const l, MatrixA& a, MatrixB& b,
             real_type const tola, real_type const tolb, VectorALPHA& alpha,
             VectorBETA& beta, MatrixU& u, MatrixV& v, MatrixQ& q,
             integer_t& ncycle, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(b) ) );
-        compute( jobu, jobv, jobq, k, l, a, b, tola, tolb, alpha, beta, u, v,
+        invoke( jobu, jobv, jobq, k, l, a, b, tola, tolb, alpha, beta, u, v,
                 q, ncycle, info, workspace( tmp_work ) );
     }
 
@@ -272,12 +268,12 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixU, typename MatrixV,
             typename MatrixQ >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             integer_t const k, integer_t const l, MatrixA& a, MatrixB& b,
             real_type const tola, real_type const tolb, VectorALPHA& alpha,
             VectorBETA& beta, MatrixU& u, MatrixV& v, MatrixQ& q,
             integer_t& ncycle, integer_t& info, optimal_workspace work ) {
-        compute( jobu, jobv, jobq, k, l, a, b, tola, tolb, alpha, beta, u, v,
+        invoke( jobu, jobv, jobq, k, l, a, b, tola, tolb, alpha, beta, u, v,
                 q, ncycle, info, minimal_workspace() );
     }
 
@@ -300,8 +296,8 @@
         integer_t& ncycle, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    tgsja_impl< value_type >::compute( jobu, jobv, jobq, k, l, a, b,
-            tola, tolb, alpha, beta, u, v, q, ncycle, info, work );
+    tgsja_impl< value_type >::invoke( jobu, jobv, jobq, k, l, a, b, tola,
+            tolb, alpha, beta, u, v, q, ncycle, info, work );
     return info;
 }
 
@@ -318,9 +314,8 @@
         integer_t& ncycle ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    tgsja_impl< value_type >::compute( jobu, jobv, jobq, k, l, a, b,
-            tola, tolb, alpha, beta, u, v, q, ncycle, info,
-            optimal_workspace() );
+    tgsja_impl< value_type >::invoke( jobu, jobv, jobq, k, l, a, b, tola,
+            tolb, alpha, beta, u, v, q, ncycle, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsna.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsna.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsna.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TGSNA_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -92,14 +90,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorSELECT, typename MatrixA, typename MatrixB,
             typename MatrixVL, typename MatrixVR, typename VectorS,
             typename VectorDIF, typename WORK, typename IWORK >
-    static void compute( char const job, char const howmny,
+    static void invoke( char const job, char const howmny,
             VectorSELECT& select, integer_t const n, MatrixA& a, MatrixB& b,
             MatrixVL& vl, MatrixVR& vr, VectorS& s, VectorDIF& dif,
             integer_t const mm, integer_t& m, integer_t& info,
@@ -144,7 +141,7 @@
     template< typename VectorSELECT, typename MatrixA, typename MatrixB,
             typename MatrixVL, typename MatrixVR, typename VectorS,
             typename VectorDIF >
-    static void compute( char const job, char const howmny,
+    static void invoke( char const job, char const howmny,
             VectorSELECT& select, integer_t const n, MatrixA& a, MatrixB& b,
             MatrixVL& vl, MatrixVR& vr, VectorS& s, VectorDIF& dif,
             integer_t const mm, integer_t& m, integer_t& info,
@@ -153,7 +150,7 @@
                 $CALL_MIN_SIZE ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 $CALL_MIN_SIZE ) );
-        compute( job, howmny, select, n, a, b, vl, vr, s, dif, mm, m, info,
+        invoke( job, howmny, select, n, a, b, vl, vr, s, dif, mm, m, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -161,7 +158,7 @@
     template< typename VectorSELECT, typename MatrixA, typename MatrixB,
             typename MatrixVL, typename MatrixVR, typename VectorS,
             typename VectorDIF >
-    static void compute( char const job, char const howmny,
+    static void invoke( char const job, char const howmny,
             VectorSELECT& select, integer_t const n, MatrixA& a, MatrixB& b,
             MatrixVL& vl, MatrixVR& vr, VectorS& s, VectorDIF& dif,
             integer_t const mm, integer_t& m, integer_t& info,
@@ -178,7 +175,7 @@
                 &opt_size_work, -1, traits::vector_storage(tmp_iwork), info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( job, howmny, select, n, a, b, vl, vr, s, dif, mm, m, info,
+        invoke( job, howmny, select, n, a, b, vl, vr, s, dif, mm, m, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -197,14 +194,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorSELECT, typename MatrixA, typename MatrixB,
             typename MatrixVL, typename MatrixVR, typename VectorS,
             typename VectorDIF, typename WORK, typename IWORK >
-    static void compute( char const job, char const howmny,
+    static void invoke( char const job, char const howmny,
             VectorSELECT& select, integer_t const n, MatrixA& a, MatrixB& b,
             MatrixVL& vl, MatrixVR& vr, VectorS& s, VectorDIF& dif,
             integer_t const mm, integer_t& m, integer_t& info,
@@ -246,7 +242,7 @@
     template< typename VectorSELECT, typename MatrixA, typename MatrixB,
             typename MatrixVL, typename MatrixVR, typename VectorS,
             typename VectorDIF >
-    static void compute( char const job, char const howmny,
+    static void invoke( char const job, char const howmny,
             VectorSELECT& select, integer_t const n, MatrixA& a, MatrixB& b,
             MatrixVL& vl, MatrixVR& vr, VectorS& s, VectorDIF& dif,
             integer_t const mm, integer_t& m, integer_t& info,
@@ -255,7 +251,7 @@
                 $CALL_MIN_SIZE ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 $CALL_MIN_SIZE ) );
-        compute( job, howmny, select, n, a, b, vl, vr, s, dif, mm, m, info,
+        invoke( job, howmny, select, n, a, b, vl, vr, s, dif, mm, m, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -263,12 +259,12 @@
     template< typename VectorSELECT, typename MatrixA, typename MatrixB,
             typename MatrixVL, typename MatrixVR, typename VectorS,
             typename VectorDIF >
-    static void compute( char const job, char const howmny,
+    static void invoke( char const job, char const howmny,
             VectorSELECT& select, integer_t const n, MatrixA& a, MatrixB& b,
             MatrixVL& vl, MatrixVR& vr, VectorS& s, VectorDIF& dif,
             integer_t const mm, integer_t& m, integer_t& info,
             optimal_workspace work ) {
-        compute( job, howmny, select, n, a, b, vl, vr, s, dif, mm, m, info,
+        invoke( job, howmny, select, n, a, b, vl, vr, s, dif, mm, m, info,
                 minimal_workspace() );
     }
 
@@ -293,7 +289,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    tgsna_impl< value_type >::compute( job, howmny, select, n, a, b, vl,
+    tgsna_impl< value_type >::invoke( job, howmny, select, n, a, b, vl,
             vr, s, dif, mm, m, info, work );
     return info;
 }
@@ -309,7 +305,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    tgsna_impl< value_type >::compute( job, howmny, select, n, a, b, vl,
+    tgsna_impl< value_type >::invoke( job, howmny, select, n, a, b, vl,
             vr, s, dif, mm, m, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsyl.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsyl.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tgsyl.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TGSYL_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -100,14 +98,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixC,
             typename MatrixD, typename MatrixE, typename MatrixF,
             typename WORK, typename IWORK >
-    static void compute( char const trans, integer_t const ijob,
+    static void invoke( char const trans, integer_t const ijob,
             integer_t const m, integer_t const n, MatrixA& a, MatrixB& b,
             MatrixC& c, MatrixD& d, MatrixE& e, MatrixF& f, real_type& scale,
             real_type& dif, integer_t& info, detail::workspace2< WORK,
@@ -147,21 +144,21 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixC,
             typename MatrixD, typename MatrixE, typename MatrixF >
-    static void compute( char const trans, integer_t const ijob,
+    static void invoke( char const trans, integer_t const ijob,
             integer_t const m, integer_t const n, MatrixA& a, MatrixB& b,
             MatrixC& c, MatrixD& d, MatrixE& e, MatrixF& f, real_type& scale,
             real_type& dif, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( m, n ) );
-        compute( trans, ijob, m, n, a, b, c, d, e, f, scale, dif, info,
+        invoke( trans, ijob, m, n, a, b, c, d, e, f, scale, dif, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixC,
             typename MatrixD, typename MatrixE, typename MatrixF >
-    static void compute( char const trans, integer_t const ijob,
+    static void invoke( char const trans, integer_t const ijob,
             integer_t const m, integer_t const n, MatrixA& a, MatrixB& b,
             MatrixC& c, MatrixD& d, MatrixE& e, MatrixF& f, real_type& scale,
             real_type& dif, integer_t& info, optimal_workspace work ) {
@@ -177,7 +174,7 @@
                 traits::vector_storage(tmp_iwork), info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( trans, ijob, m, n, a, b, c, d, e, f, scale, dif, info,
+        invoke( trans, ijob, m, n, a, b, c, d, e, f, scale, dif, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -196,14 +193,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixC,
             typename MatrixD, typename MatrixE, typename MatrixF,
             typename WORK, typename IWORK >
-    static void compute( char const trans, integer_t const ijob,
+    static void invoke( char const trans, integer_t const ijob,
             integer_t const m, integer_t const n, MatrixA& a, MatrixB& b,
             MatrixC& c, MatrixD& d, MatrixE& e, MatrixF& f, real_type& scale,
             real_type& dif, integer_t& info, detail::workspace2< WORK,
@@ -243,21 +239,21 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixC,
             typename MatrixD, typename MatrixE, typename MatrixF >
-    static void compute( char const trans, integer_t const ijob,
+    static void invoke( char const trans, integer_t const ijob,
             integer_t const m, integer_t const n, MatrixA& a, MatrixB& b,
             MatrixC& c, MatrixD& d, MatrixE& e, MatrixF& f, real_type& scale,
             real_type& dif, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( m, n ) );
-        compute( trans, ijob, m, n, a, b, c, d, e, f, scale, dif, info,
+        invoke( trans, ijob, m, n, a, b, c, d, e, f, scale, dif, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixC,
             typename MatrixD, typename MatrixE, typename MatrixF >
-    static void compute( char const trans, integer_t const ijob,
+    static void invoke( char const trans, integer_t const ijob,
             integer_t const m, integer_t const n, MatrixA& a, MatrixB& b,
             MatrixC& c, MatrixD& d, MatrixE& e, MatrixF& f, real_type& scale,
             real_type& dif, integer_t& info, optimal_workspace work ) {
@@ -273,7 +269,7 @@
                 traits::vector_storage(tmp_iwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( trans, ijob, m, n, a, b, c, d, e, f, scale, dif, info,
+        invoke( trans, ijob, m, n, a, b, c, d, e, f, scale, dif, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -299,7 +295,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    tgsyl_impl< value_type >::compute( trans, ijob, m, n, a, b, c, d, e,
+    tgsyl_impl< value_type >::invoke( trans, ijob, m, n, a, b, c, d, e,
             f, scale, dif, info, work );
     return info;
 }
@@ -314,7 +310,7 @@
         typename traits::matrix_traits< MatrixA >::value_type& dif ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    tgsyl_impl< value_type >::compute( trans, ijob, m, n, a, b, c, d, e,
+    tgsyl_impl< value_type >::invoke( trans, ijob, m, n, a, b, c, d, e,
             f, scale, dif, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tprfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tprfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tprfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TPRFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -83,14 +81,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR, typename WORK,
             typename IWORK >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, MatrixAP& ap, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, IWORK > work ) {
@@ -131,24 +128,24 @@
     // minimal workspace specialization
     template< typename MatrixAP, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, MatrixAP& ap, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( uplo, trans, diag, n, ap, b, x, ferr, berr, info,
+        invoke( uplo, trans, diag, n, ap, b, x, ferr, berr, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, MatrixAP& ap, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( uplo, trans, diag, n, ap, b, x, ferr, berr, info,
+        invoke( uplo, trans, diag, n, ap, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -167,14 +164,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR, typename WORK,
             typename RWORK >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, MatrixAP& ap, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
@@ -212,24 +208,24 @@
     // minimal workspace specialization
     template< typename MatrixAP, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, MatrixAP& ap, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( uplo, trans, diag, n, ap, b, x, ferr, berr, info,
+        invoke( uplo, trans, diag, n, ap, b, x, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, MatrixAP& ap, MatrixB& b, MatrixX& x,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( uplo, trans, diag, n, ap, b, x, ferr, berr, info,
+        invoke( uplo, trans, diag, n, ap, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -251,7 +247,7 @@
         MatrixX& x, VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    tprfs_impl< value_type >::compute( uplo, trans, diag, n, ap, b, x,
+    tprfs_impl< value_type >::invoke( uplo, trans, diag, n, ap, b, x,
             ferr, berr, info, work );
     return info;
 }
@@ -264,7 +260,7 @@
         MatrixX& x, VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    tprfs_impl< value_type >::compute( uplo, trans, diag, n, ap, b, x,
+    tprfs_impl< value_type >::invoke( uplo, trans, diag, n, ap, b, x,
             ferr, berr, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptri.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptri.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TPTRI_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -56,11 +54,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAP >
-    static void compute( char const diag, MatrixAP& ap, integer_t& info ) {
+    static void invoke( char const diag, MatrixAP& ap, integer_t& info ) {
         BOOST_ASSERT( traits::matrix_uplo_tag(ap) == 'U' ||
                 traits::matrix_uplo_tag(ap) == 'L' );
         BOOST_ASSERT( diag == 'N' || diag == 'U' );
@@ -77,7 +75,7 @@
 inline integer_t tptri( char const diag, MatrixAP& ap ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    tptri_impl< value_type >::compute( diag, ap, info );
+    tptri_impl< value_type >::invoke( diag, ap, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tptrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TPTRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -62,12 +60,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixAP, typename MatrixB >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             integer_t const n, MatrixAP& ap, MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixAP >::value_type, typename traits::matrix_traits<
@@ -91,8 +88,7 @@
         char const diag, integer_t const n, MatrixAP& ap, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    tptrs_impl< value_type >::compute( uplo, trans, diag, n, ap, b,
-            info );
+    tptrs_impl< value_type >::invoke( uplo, trans, diag, n, ap, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trcon.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TRCON_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -75,11 +73,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename WORK, typename IWORK >
-    static void compute( char const norm, char const uplo, char const diag,
+    static void invoke( char const norm, char const uplo, char const diag,
             MatrixA& a, real_type& rcond, integer_t& info, detail::workspace2<
             WORK, IWORK > work ) {
         BOOST_ASSERT( norm == '1' || norm == 'O' || norm == 'I' );
@@ -100,23 +98,23 @@
 
     // minimal workspace specialization
     template< typename MatrixA >
-    static void compute( char const norm, char const uplo, char const diag,
+    static void invoke( char const norm, char const uplo, char const diag,
             MatrixA& a, real_type& rcond, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( norm, uplo, diag, a, rcond, info, workspace( tmp_work,
+        invoke( norm, uplo, diag, a, rcond, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA >
-    static void compute( char const norm, char const uplo, char const diag,
+    static void invoke( char const norm, char const uplo, char const diag,
             MatrixA& a, real_type& rcond, integer_t& info,
             optimal_workspace work ) {
-        compute( norm, uplo, diag, a, rcond, info, minimal_workspace() );
+        invoke( norm, uplo, diag, a, rcond, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -134,11 +132,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename WORK, typename RWORK >
-    static void compute( char const norm, char const uplo, char const diag,
+    static void invoke( char const norm, char const uplo, char const diag,
             MatrixA& a, real_type& rcond, integer_t& info, detail::workspace2<
             WORK, RWORK > work ) {
         BOOST_ASSERT( norm == '1' || norm == 'O' || norm == 'I' );
@@ -159,23 +157,23 @@
 
     // minimal workspace specialization
     template< typename MatrixA >
-    static void compute( char const norm, char const uplo, char const diag,
+    static void invoke( char const norm, char const uplo, char const diag,
             MatrixA& a, real_type& rcond, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( norm, uplo, diag, a, rcond, info, workspace( tmp_work,
+        invoke( norm, uplo, diag, a, rcond, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA >
-    static void compute( char const norm, char const uplo, char const diag,
+    static void invoke( char const norm, char const uplo, char const diag,
             MatrixA& a, real_type& rcond, integer_t& info,
             optimal_workspace work ) {
-        compute( norm, uplo, diag, a, rcond, info, minimal_workspace() );
+        invoke( norm, uplo, diag, a, rcond, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -195,7 +193,7 @@
         MatrixA >::value_type& rcond, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    trcon_impl< value_type >::compute( norm, uplo, diag, a, rcond, info,
+    trcon_impl< value_type >::invoke( norm, uplo, diag, a, rcond, info,
             work );
     return info;
 }
@@ -207,7 +205,7 @@
         MatrixA >::value_type& rcond ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    trcon_impl< value_type >::compute( norm, uplo, diag, a, rcond, info,
+    trcon_impl< value_type >::invoke( norm, uplo, diag, a, rcond, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trevc.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trevc.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trevc.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TREVC_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -83,12 +81,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
             typename MatrixVR, typename WORK >
-    static void compute( char const side, char const howmny,
+    static void invoke( char const side, char const howmny,
             VectorSELECT& select, MatrixT& t, MatrixVL& vl, MatrixVR& vr,
             integer_t const mm, integer_t& m, integer_t& info,
             detail::workspace1< WORK > work ) {
@@ -117,24 +115,24 @@
     // minimal workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
             typename MatrixVR >
-    static void compute( char const side, char const howmny,
+    static void invoke( char const side, char const howmny,
             VectorSELECT& select, MatrixT& t, MatrixVL& vl, MatrixVR& vr,
             integer_t const mm, integer_t& m, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(t) ) );
-        compute( side, howmny, select, t, vl, vr, mm, m, info,
+        invoke( side, howmny, select, t, vl, vr, mm, m, info,
                 workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
             typename MatrixVR >
-    static void compute( char const side, char const howmny,
+    static void invoke( char const side, char const howmny,
             VectorSELECT& select, MatrixT& t, MatrixVL& vl, MatrixVR& vr,
             integer_t const mm, integer_t& m, integer_t& info,
             optimal_workspace work ) {
-        compute( side, howmny, select, t, vl, vr, mm, m, info,
+        invoke( side, howmny, select, t, vl, vr, mm, m, info,
                 minimal_workspace() );
     }
 
@@ -149,12 +147,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
             typename MatrixVR, typename WORK, typename RWORK >
-    static void compute( char const side, char const howmny,
+    static void invoke( char const side, char const howmny,
             VectorSELECT& select, MatrixT& t, MatrixVL& vl, MatrixVR& vr,
             integer_t const mm, integer_t& m, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
@@ -186,7 +184,7 @@
     // minimal workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
             typename MatrixVR >
-    static void compute( char const side, char const howmny,
+    static void invoke( char const side, char const howmny,
             VectorSELECT& select, MatrixT& t, MatrixVL& vl, MatrixVR& vr,
             integer_t const mm, integer_t& m, integer_t& info,
             minimal_workspace work ) {
@@ -194,18 +192,18 @@
                 traits::matrix_num_columns(t) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(t) ) );
-        compute( side, howmny, select, t, vl, vr, mm, m, info,
+        invoke( side, howmny, select, t, vl, vr, mm, m, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
             typename MatrixVR >
-    static void compute( char const side, char const howmny,
+    static void invoke( char const side, char const howmny,
             VectorSELECT& select, MatrixT& t, MatrixVL& vl, MatrixVR& vr,
             integer_t const mm, integer_t& m, integer_t& info,
             optimal_workspace work ) {
-        compute( side, howmny, select, t, vl, vr, mm, m, info,
+        invoke( side, howmny, select, t, vl, vr, mm, m, info,
                 minimal_workspace() );
     }
 
@@ -228,7 +226,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    trevc_impl< value_type >::compute( side, howmny, select, t, vl, vr,
+    trevc_impl< value_type >::invoke( side, howmny, select, t, vl, vr,
             mm, m, info, work );
     return info;
 }
@@ -242,7 +240,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    trevc_impl< value_type >::compute( side, howmny, select, t, vl, vr,
+    trevc_impl< value_type >::invoke( side, howmny, select, t, vl, vr,
             mm, m, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trexc.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trexc.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trexc.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TREXC_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -75,11 +73,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixT, typename MatrixQ >
-    static void compute( char const compq, MatrixT& t, MatrixQ& q,
+    static void invoke( char const compq, MatrixT& t, MatrixQ& q,
             integer_t& ifst, integer_t& ilst, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixT >::value_type, typename traits::matrix_traits<
@@ -105,11 +103,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixT, typename MatrixQ, $WORKSPACE_TYPENAMES >
-    static void compute( char const compq, MatrixT& t, MatrixQ& q,
+    static void invoke( char const compq, MatrixT& t, MatrixQ& q,
             integer_t const ifst, integer_t const ilst, integer_t& info,
             detail::workspace$WORKSPACE_SIZE< $WORKSPACE_TYPES > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -129,16 +127,16 @@
 
     // minimal workspace specialization
     template< typename MatrixT, typename MatrixQ >
-    static void compute( char const compq, MatrixT& t, MatrixQ& q,
+    static void invoke( char const compq, MatrixT& t, MatrixQ& q,
             integer_t const ifst, integer_t const ilst, integer_t& info,
             minimal_workspace work ) {
 $SETUP_MIN_WORKARRAYS_POST
-        compute( compq, t, q, ifst, ilst, info, workspace( $TMP_WORKARRAYS ) );
+        invoke( compq, t, q, ifst, ilst, info, workspace( $TMP_WORKARRAYS ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixT, typename MatrixQ >
-    static void compute( char const compq, MatrixT& t, MatrixQ& q,
+    static void invoke( char const compq, MatrixT& t, MatrixQ& q,
             integer_t const ifst, integer_t const ilst, integer_t& info,
             optimal_workspace work ) {
 $OPT_WORKSPACE_FUNC
@@ -154,7 +152,7 @@
         integer_t& ifst, integer_t& ilst ) {
     typedef typename traits::matrix_traits< MatrixT >::value_type value_type;
     integer_t info(0);
-    trexc_impl< value_type >::compute( compq, t, q, ifst, ilst, info );
+    trexc_impl< value_type >::invoke( compq, t, q, ifst, ilst, info );
     return info;
 }
 // template function to call trexc
@@ -163,7 +161,7 @@
         integer_t const ifst, integer_t const ilst, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixT >::value_type value_type;
     integer_t info(0);
-    trexc_impl< value_type >::compute( compq, t, q, ifst, ilst, info,
+    trexc_impl< value_type >::invoke( compq, t, q, ifst, ilst, info,
             work );
     return info;
 }
@@ -174,7 +172,7 @@
         integer_t const ifst, integer_t const ilst ) {
     typedef typename traits::matrix_traits< MatrixT >::value_type value_type;
     integer_t info(0);
-    trexc_impl< value_type >::compute( compq, t, q, ifst, ilst, info,
+    trexc_impl< value_type >::invoke( compq, t, q, ifst, ilst, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trrfs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trrfs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trrfs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TRRFS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -87,14 +85,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR, typename WORK,
             typename IWORK >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             MatrixA& a, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
@@ -140,24 +137,24 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             MatrixA& a, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( uplo, trans, diag, a, b, x, ferr, berr, info,
+        invoke( uplo, trans, diag, a, b, x, ferr, berr, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             MatrixA& a, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, optimal_workspace work ) {
-        compute( uplo, trans, diag, a, b, x, ferr, berr, info,
+        invoke( uplo, trans, diag, a, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -176,14 +173,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR, typename WORK,
             typename RWORK >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             MatrixA& a, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, detail::workspace2< WORK,
             RWORK > work ) {
@@ -226,24 +222,24 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             MatrixA& a, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( uplo, trans, diag, a, b, x, ferr, berr, info,
+        invoke( uplo, trans, diag, a, b, x, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             MatrixA& a, MatrixB& b, MatrixX& x, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, optimal_workspace work ) {
-        compute( uplo, trans, diag, a, b, x, ferr, berr, info,
+        invoke( uplo, trans, diag, a, b, x, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -265,7 +261,7 @@
         VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    trrfs_impl< value_type >::compute( uplo, trans, diag, a, b, x, ferr,
+    trrfs_impl< value_type >::invoke( uplo, trans, diag, a, b, x, ferr,
             berr, info, work );
     return info;
 }
@@ -278,7 +274,7 @@
         VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    trrfs_impl< value_type >::compute( uplo, trans, diag, a, b, x, ferr,
+    trrfs_impl< value_type >::invoke( uplo, trans, diag, a, b, x, ferr,
             berr, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsen.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsen.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsen.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TRSEN_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -61,12 +59,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixQ,
             typename VectorW, typename WORK >
-    static void compute( char const job, char const compq,
+    static void invoke( char const job, char const compq,
             VectorSELECT& select, MatrixT& t, MatrixQ& q, VectorW& w,
             integer_t& m, real_type& s, real_type& sep, integer_t& info,
             detail::workspace1< WORK > work ) {
@@ -98,20 +96,20 @@
     // minimal workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixQ,
             typename VectorW >
-    static void compute( char const job, char const compq,
+    static void invoke( char const job, char const compq,
             VectorSELECT& select, MatrixT& t, MatrixQ& q, VectorW& w,
             integer_t& m, real_type& s, real_type& sep, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( job, compq, select, t, q, w, m, s, sep, info,
+        invoke( job, compq, select, t, q, w, m, s, sep, info,
                 workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixQ,
             typename VectorW >
-    static void compute( char const job, char const compq,
+    static void invoke( char const job, char const compq,
             VectorSELECT& select, MatrixT& t, MatrixQ& q, VectorW& w,
             integer_t& m, real_type& s, real_type& sep, integer_t& info,
             optimal_workspace work ) {
@@ -123,7 +121,7 @@
                 sep, &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( job, compq, select, t, q, w, m, s, sep, info,
+        invoke( job, compq, select, t, q, w, m, s, sep, info,
                 workspace( tmp_work ) );
     }
 
@@ -144,7 +142,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    trsen_impl< value_type >::compute( job, compq, select, t, q, w, m, s,
+    trsen_impl< value_type >::invoke( job, compq, select, t, q, w, m, s,
             sep, info, work );
     return info;
 }
@@ -160,7 +158,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    trsen_impl< value_type >::compute( job, compq, select, t, q, w, m, s,
+    trsen_impl< value_type >::invoke( job, compq, select, t, q, w, m, s,
             sep, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsna.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsna.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsna.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TRSNA_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -88,13 +86,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
             typename MatrixVR, typename VectorS, typename VectorSEP,
             typename WORK, typename IWORK >
-    static void compute( char const job, char const howmny,
+    static void invoke( char const job, char const howmny,
             VectorSELECT& select, MatrixT& t, MatrixVL& vl, MatrixVR& vr,
             VectorS& s, VectorSEP& sep, integer_t const mm, integer_t& m,
             integer_t& info, detail::workspace2< WORK, IWORK > work ) {
@@ -133,7 +131,7 @@
     // minimal workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
             typename MatrixVR, typename VectorS, typename VectorSEP >
-    static void compute( char const job, char const howmny,
+    static void invoke( char const job, char const howmny,
             VectorSELECT& select, MatrixT& t, MatrixVL& vl, MatrixVR& vr,
             VectorS& s, VectorSEP& sep, integer_t const mm, integer_t& m,
             integer_t& info, minimal_workspace work ) {
@@ -141,18 +139,18 @@
                 $CALL_MIN_SIZE ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 $CALL_MIN_SIZE ) );
-        compute( job, howmny, select, t, vl, vr, s, sep, mm, m, info,
+        invoke( job, howmny, select, t, vl, vr, s, sep, mm, m, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
             typename MatrixVR, typename VectorS, typename VectorSEP >
-    static void compute( char const job, char const howmny,
+    static void invoke( char const job, char const howmny,
             VectorSELECT& select, MatrixT& t, MatrixVL& vl, MatrixVR& vr,
             VectorS& s, VectorSEP& sep, integer_t const mm, integer_t& m,
             integer_t& info, optimal_workspace work ) {
-        compute( job, howmny, select, t, vl, vr, s, sep, mm, m, info,
+        invoke( job, howmny, select, t, vl, vr, s, sep, mm, m, info,
                 minimal_workspace() );
     }
 
@@ -171,13 +169,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
             typename MatrixVR, typename VectorS, typename VectorSEP,
             typename WORK, typename RWORK >
-    static void compute( char const job, char const howmny,
+    static void invoke( char const job, char const howmny,
             VectorSELECT& select, MatrixT& t, MatrixVL& vl, MatrixVR& vr,
             VectorS& s, VectorSEP& sep, integer_t const mm, integer_t& m,
             integer_t& info, detail::workspace2< WORK, RWORK > work ) {
@@ -213,7 +211,7 @@
     // minimal workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
             typename MatrixVR, typename VectorS, typename VectorSEP >
-    static void compute( char const job, char const howmny,
+    static void invoke( char const job, char const howmny,
             VectorSELECT& select, MatrixT& t, MatrixVL& vl, MatrixVR& vr,
             VectorS& s, VectorSEP& sep, integer_t const mm, integer_t& m,
             integer_t& info, minimal_workspace work ) {
@@ -221,18 +219,18 @@
                 $CALL_MIN_SIZE ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 $CALL_MIN_SIZE ) );
-        compute( job, howmny, select, t, vl, vr, s, sep, mm, m, info,
+        invoke( job, howmny, select, t, vl, vr, s, sep, mm, m, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorSELECT, typename MatrixT, typename MatrixVL,
             typename MatrixVR, typename VectorS, typename VectorSEP >
-    static void compute( char const job, char const howmny,
+    static void invoke( char const job, char const howmny,
             VectorSELECT& select, MatrixT& t, MatrixVL& vl, MatrixVR& vr,
             VectorS& s, VectorSEP& sep, integer_t const mm, integer_t& m,
             integer_t& info, optimal_workspace work ) {
-        compute( job, howmny, select, t, vl, vr, s, sep, mm, m, info,
+        invoke( job, howmny, select, t, vl, vr, s, sep, mm, m, info,
                 minimal_workspace() );
     }
 
@@ -257,7 +255,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    trsna_impl< value_type >::compute( job, howmny, select, t, vl, vr, s,
+    trsna_impl< value_type >::invoke( job, howmny, select, t, vl, vr, s,
             sep, mm, m, info, work );
     return info;
 }
@@ -271,7 +269,7 @@
     typedef typename traits::vector_traits<
             VectorSELECT >::value_type value_type;
     integer_t info(0);
-    trsna_impl< value_type >::compute( job, howmny, select, t, vl, vr, s,
+    trsna_impl< value_type >::invoke( job, howmny, select, t, vl, vr, s,
             sep, mm, m, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsyl.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsyl.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trsyl.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TRSYL_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -79,12 +77,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename MatrixB, typename MatrixC >
-    static void compute( char const trana, char const tranb,
+    static void invoke( char const trana, char const tranb,
             integer_t const isgn, integer_t const m, integer_t const n,
             MatrixA& a, MatrixB& b, MatrixC& c, real_type& scale,
             integer_t& info ) {
@@ -114,12 +111,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename MatrixB, typename MatrixC >
-    static void compute( char const trana, char const tranb,
+    static void invoke( char const trana, char const tranb,
             integer_t const isgn, integer_t const m, integer_t const n,
             MatrixA& a, MatrixB& b, MatrixC& c, real_type& scale,
             integer_t& info ) {
@@ -152,7 +148,7 @@
         MatrixA >::value_type& scale ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    trsyl_impl< value_type >::compute( trana, tranb, isgn, m, n, a, b, c,
+    trsyl_impl< value_type >::invoke( trana, tranb, isgn, m, n, a, b, c,
             scale, info );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtri.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtri.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtri.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TRTRI_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -56,11 +54,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA >
-    static void compute( char const diag, MatrixA& a, integer_t& info ) {
+    static void invoke( char const diag, MatrixA& a, integer_t& info ) {
         BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
                 traits::matrix_uplo_tag(a) == 'L' );
         BOOST_ASSERT( diag == 'N' || diag == 'U' );
@@ -79,7 +77,7 @@
 inline integer_t trtri( char const diag, MatrixA& a ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    trtri_impl< value_type >::compute( diag, a, info );
+    trtri_impl< value_type >::invoke( diag, a, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtrs.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtrs.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/trtrs.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TRTRS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -70,12 +68,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename MatrixA, typename MatrixB >
-    static void compute( char const uplo, char const trans, char const diag,
+    static void invoke( char const uplo, char const trans, char const diag,
             MatrixA& a, MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -103,7 +100,7 @@
         char const diag, MatrixA& a, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    trtrs_impl< value_type >::compute( uplo, trans, diag, a, b, info );
+    trtrs_impl< value_type >::invoke( uplo, trans, diag, a, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tzrzf.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tzrzf.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/tzrzf.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_TZRZF_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -74,11 +72,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -100,16 +98,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
         detail::tzrzf( traits::matrix_num_rows(a),
@@ -118,7 +116,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -132,11 +130,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -158,16 +156,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( MatrixA& a, VectorTAU& tau, integer_t& info,
+    static void invoke( MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
         detail::tzrzf( traits::matrix_num_rows(a),
@@ -176,7 +174,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, tau, info, workspace( tmp_work ) );
+        invoke( a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -190,7 +188,7 @@
 inline integer_t tzrzf( MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    tzrzf_impl< value_type >::compute( a, tau, info, work );
+    tzrzf_impl< value_type >::invoke( a, tau, info, work );
     return info;
 }
 
@@ -199,8 +197,7 @@
 inline integer_t tzrzf( MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    tzrzf_impl< value_type >::compute( a, tau, info,
-            optimal_workspace() );
+    tzrzf_impl< value_type >::invoke( a, tau, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungbr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungbr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungbr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNGBR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -59,13 +57,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( char const vect, integer_t const m,
-            integer_t const n, integer_t const k, MatrixA& a, VectorTAU& tau,
-            integer_t& info, detail::workspace1< WORK > work ) {
+    static void invoke( char const vect, integer_t const m, integer_t const n,
+            integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
+            detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
                 VectorTAU >::value_type >::value) );
@@ -83,25 +81,25 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( char const vect, integer_t const m,
-            integer_t const n, integer_t const k, MatrixA& a, VectorTAU& tau,
-            integer_t& info, minimal_workspace work ) {
+    static void invoke( char const vect, integer_t const m, integer_t const n,
+            integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
+            minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( m, n ) );
-        compute( vect, m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( vect, m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( char const vect, integer_t const m,
-            integer_t const n, integer_t const k, MatrixA& a, VectorTAU& tau,
-            integer_t& info, optimal_workspace work ) {
+    static void invoke( char const vect, integer_t const m, integer_t const n,
+            integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
+            optimal_workspace work ) {
         value_type opt_size_work;
         detail::ungbr( vect, m, n, k, traits::matrix_storage(a),
                 traits::leading_dimension(a), traits::vector_storage(tau),
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( vect, m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( vect, m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n ) {
@@ -117,8 +115,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ungbr_impl< value_type >::compute( vect, m, n, k, a, tau, info,
-            work );
+    ungbr_impl< value_type >::invoke( vect, m, n, k, a, tau, info, work );
     return info;
 }
 
@@ -128,7 +125,7 @@
         integer_t const n, integer_t const k, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ungbr_impl< value_type >::compute( vect, m, n, k, a, tau, info,
+    ungbr_impl< value_type >::invoke( vect, m, n, k, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unghr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unghr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unghr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNGHR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -59,11 +57,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const n, integer_t const ilo,
+    static void invoke( integer_t const n, integer_t const ilo,
             integer_t const ihi, MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -82,17 +80,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const n, integer_t const ilo,
+    static void invoke( integer_t const n, integer_t const ilo,
             integer_t const ihi, MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( n, ilo, ihi, a, tau, info, workspace( tmp_work ) );
+        invoke( n, ilo, ihi, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const n, integer_t const ilo,
+    static void invoke( integer_t const n, integer_t const ilo,
             integer_t const ihi, MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -101,7 +99,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( n, ilo, ihi, a, tau, info, workspace( tmp_work ) );
+        invoke( n, ilo, ihi, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -116,7 +114,7 @@
         integer_t const ihi, MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unghr_impl< value_type >::compute( n, ilo, ihi, a, tau, info, work );
+    unghr_impl< value_type >::invoke( n, ilo, ihi, a, tau, info, work );
     return info;
 }
 
@@ -126,7 +124,7 @@
         integer_t const ihi, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unghr_impl< value_type >::compute( n, ilo, ihi, a, tau, info,
+    unghr_impl< value_type >::invoke( n, ilo, ihi, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unglq.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unglq.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unglq.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNGLQ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -59,11 +57,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -84,16 +82,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( m ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -102,7 +100,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m ) {
@@ -117,7 +115,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unglq_impl< value_type >::compute( m, n, k, a, tau, info, work );
+    unglq_impl< value_type >::invoke( m, n, k, a, tau, info, work );
     return info;
 }
 
@@ -127,7 +125,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unglq_impl< value_type >::compute( m, n, k, a, tau, info,
+    unglq_impl< value_type >::invoke( m, n, k, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungql.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungql.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungql.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNGQL_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -59,11 +57,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -84,16 +82,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -102,7 +100,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -117,7 +115,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ungql_impl< value_type >::compute( m, n, k, a, tau, info, work );
+    ungql_impl< value_type >::invoke( m, n, k, a, tau, info, work );
     return info;
 }
 
@@ -127,7 +125,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ungql_impl< value_type >::compute( m, n, k, a, tau, info,
+    ungql_impl< value_type >::invoke( m, n, k, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungqr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungqr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungqr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNGQR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -59,11 +57,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -84,16 +82,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -102,7 +100,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -117,7 +115,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ungqr_impl< value_type >::compute( m, n, k, a, tau, info, work );
+    ungqr_impl< value_type >::invoke( m, n, k, a, tau, info, work );
     return info;
 }
 
@@ -127,7 +125,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ungqr_impl< value_type >::compute( m, n, k, a, tau, info,
+    ungqr_impl< value_type >::invoke( m, n, k, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungrq.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungrq.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungrq.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNGRQ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -59,11 +57,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -84,16 +82,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( m ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const m, integer_t const n,
+    static void invoke( integer_t const m, integer_t const n,
             integer_t const k, MatrixA& a, VectorTAU& tau, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -102,7 +100,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( m, n, k, a, tau, info, workspace( tmp_work ) );
+        invoke( m, n, k, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m ) {
@@ -117,7 +115,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ungrq_impl< value_type >::compute( m, n, k, a, tau, info, work );
+    ungrq_impl< value_type >::invoke( m, n, k, a, tau, info, work );
     return info;
 }
 
@@ -127,7 +125,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ungrq_impl< value_type >::compute( m, n, k, a, tau, info,
+    ungrq_impl< value_type >::invoke( m, n, k, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/ungtr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNGTR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -57,11 +55,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename WORK >
-    static void compute( integer_t const n, MatrixA& a, VectorTAU& tau,
+    static void invoke( integer_t const n, MatrixA& a, VectorTAU& tau,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -82,16 +80,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const n, MatrixA& a, VectorTAU& tau,
+    static void invoke( integer_t const n, MatrixA& a, VectorTAU& tau,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( side, m,
                 n ) );
-        compute( n, a, tau, info, workspace( tmp_work ) );
+        invoke( n, a, tau, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU >
-    static void compute( integer_t const n, MatrixA& a, VectorTAU& tau,
+    static void invoke( integer_t const n, MatrixA& a, VectorTAU& tau,
             integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         detail::ungtr( traits::matrix_uplo_tag(a), n,
@@ -99,7 +97,7 @@
                 traits::vector_storage(tau), &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( n, a, tau, info, workspace( tmp_work ) );
+        invoke( n, a, tau, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const side, integer_t const m,
@@ -118,7 +116,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ungtr_impl< value_type >::compute( n, a, tau, info, work );
+    ungtr_impl< value_type >::invoke( n, a, tau, info, work );
     return info;
 }
 
@@ -127,7 +125,7 @@
 inline integer_t ungtr( integer_t const n, MatrixA& a, VectorTAU& tau ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ungtr_impl< value_type >::compute( n, a, tau, info,
+    ungtr_impl< value_type >::invoke( n, a, tau, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmbr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmbr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmbr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNMBR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -63,12 +61,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const vect, char const side, char const trans,
+    static void invoke( char const vect, char const side, char const trans,
             integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -99,18 +97,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const vect, char const side, char const trans,
+    static void invoke( char const vect, char const side, char const trans,
             integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( vect, side, trans, k, a, tau, c, info,
-                workspace( tmp_work ) );
+        invoke( vect, side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const vect, char const side, char const trans,
+    static void invoke( char const vect, char const side, char const trans,
             integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c,
             integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
@@ -121,8 +118,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( vect, side, trans, k, a, tau, c, info,
-                workspace( tmp_work ) );
+        invoke( vect, side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -143,7 +139,7 @@
         MatrixC& c, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmbr_impl< value_type >::compute( vect, side, trans, k, a, tau, c,
+    unmbr_impl< value_type >::invoke( vect, side, trans, k, a, tau, c,
             info, work );
     return info;
 }
@@ -155,7 +151,7 @@
         MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmbr_impl< value_type >::compute( vect, side, trans, k, a, tau, c,
+    unmbr_impl< value_type >::invoke( vect, side, trans, k, a, tau, c,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmhr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmhr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmhr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNMHR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -63,12 +61,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans,
+    static void invoke( char const side, char const trans,
             integer_t const ilo, integer_t const ihi, MatrixA& a,
             VectorTAU& tau, MatrixC& c, integer_t& info, detail::workspace1<
             WORK > work ) {
@@ -98,19 +96,19 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans,
+    static void invoke( char const side, char const trans,
             integer_t const ilo, integer_t const ihi, MatrixA& a,
             VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, trans, ilo, ihi, a, tau, c, info,
+        invoke( side, trans, ilo, ihi, a, tau, c, info,
                 workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans,
+    static void invoke( char const side, char const trans,
             integer_t const ilo, integer_t const ihi, MatrixA& a,
             VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
@@ -122,7 +120,7 @@
                 traits::leading_dimension(c), &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, ilo, ihi, a, tau, c, info,
+        invoke( side, trans, ilo, ihi, a, tau, c, info,
                 workspace( tmp_work ) );
     }
 
@@ -144,7 +142,7 @@
         MatrixC& c, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmhr_impl< value_type >::compute( side, trans, ilo, ihi, a, tau, c,
+    unmhr_impl< value_type >::invoke( side, trans, ilo, ihi, a, tau, c,
             info, work );
     return info;
 }
@@ -156,7 +154,7 @@
         MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmhr_impl< value_type >::compute( side, trans, ilo, ihi, a, tau, c,
+    unmhr_impl< value_type >::invoke( side, trans, ilo, ihi, a, tau, c,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmlq.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmlq.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmlq.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNMLQ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -61,12 +59,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -96,17 +94,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -117,7 +115,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -138,7 +136,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmlq_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    unmlq_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             work );
     return info;
 }
@@ -149,7 +147,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmlq_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    unmlq_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmql.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmql.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmql.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNMQL_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -61,12 +59,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -95,17 +93,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -116,7 +114,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -137,7 +135,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmql_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    unmql_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             work );
     return info;
 }
@@ -148,7 +146,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmql_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    unmql_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmqr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmqr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmqr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNMQR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -61,12 +59,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -95,17 +93,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -116,7 +114,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -137,7 +135,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmqr_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    unmqr_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             work );
     return info;
 }
@@ -148,7 +146,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmqr_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    unmqr_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrq.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrq.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrq.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNMRQ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -61,12 +59,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -96,17 +94,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -117,7 +115,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -138,7 +136,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmrq_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    unmrq_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             work );
     return info;
 }
@@ -149,7 +147,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmrq_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    unmrq_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrz.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrz.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmrz.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNMRZ_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -61,12 +59,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -96,17 +94,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, integer_t const k,
+    static void invoke( char const side, char const trans, integer_t const k,
             MatrixA& a, VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -118,7 +116,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, k, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -135,7 +133,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmrz_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    unmrz_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             work );
     return info;
 }
@@ -146,7 +144,7 @@
         integer_t const k, MatrixA& a, VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmrz_impl< value_type >::compute( side, trans, k, a, tau, c, info,
+    unmrz_impl< value_type >::invoke( side, trans, k, a, tau, c, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmtr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/unmtr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UNMTR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -61,12 +59,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const trans, MatrixA& a,
+    static void invoke( char const side, char const trans, MatrixA& a,
             VectorTAU& tau, MatrixC& c, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -97,17 +95,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, MatrixA& a,
+    static void invoke( char const side, char const trans, MatrixA& a,
             VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( side,
                 traits::matrix_num_rows(c), traits::matrix_num_columns(c) ) );
-        compute( side, trans, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, a, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const trans, MatrixA& a,
+    static void invoke( char const side, char const trans, MatrixA& a,
             VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -118,7 +116,7 @@
                 traits::leading_dimension(c), &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( side, trans, a, tau, c, info, workspace( tmp_work ) );
+        invoke( side, trans, a, tau, c, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( char const side, integer_t const m,
@@ -138,7 +136,7 @@
         VectorTAU& tau, MatrixC& c, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmtr_impl< value_type >::compute( side, trans, a, tau, c, info,
+    unmtr_impl< value_type >::invoke( side, trans, a, tau, c, info,
             work );
     return info;
 }
@@ -149,7 +147,7 @@
         VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    unmtr_impl< value_type >::compute( side, trans, a, tau, c, info,
+    unmtr_impl< value_type >::invoke( side, trans, a, tau, c, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upgtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upgtr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upgtr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UPGTR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -58,12 +56,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorAP, typename VectorTAU, typename MatrixQ,
             typename WORK >
-    static void compute( char const uplo, VectorAP& ap, VectorTAU& tau,
+    static void invoke( char const uplo, VectorAP& ap, VectorTAU& tau,
             MatrixQ& q, integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorAP >::value_type, typename traits::vector_traits<
@@ -90,18 +88,18 @@
 
     // minimal workspace specialization
     template< typename VectorAP, typename VectorTAU, typename MatrixQ >
-    static void compute( char const uplo, VectorAP& ap, VectorTAU& tau,
+    static void invoke( char const uplo, VectorAP& ap, VectorTAU& tau,
             MatrixQ& q, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(q) ) );
-        compute( uplo, ap, tau, q, info, workspace( tmp_work ) );
+        invoke( uplo, ap, tau, q, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorAP, typename VectorTAU, typename MatrixQ >
-    static void compute( char const uplo, VectorAP& ap, VectorTAU& tau,
+    static void invoke( char const uplo, VectorAP& ap, VectorTAU& tau,
             MatrixQ& q, integer_t& info, optimal_workspace work ) {
-        compute( uplo, ap, tau, q, info, minimal_workspace() );
+        invoke( uplo, ap, tau, q, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -117,7 +115,7 @@
         MatrixQ& q, Workspace work ) {
     typedef typename traits::vector_traits< VectorAP >::value_type value_type;
     integer_t info(0);
-    upgtr_impl< value_type >::compute( uplo, ap, tau, q, info, work );
+    upgtr_impl< value_type >::invoke( uplo, ap, tau, q, info, work );
     return info;
 }
 
@@ -127,7 +125,7 @@
         MatrixQ& q ) {
     typedef typename traits::vector_traits< VectorAP >::value_type value_type;
     integer_t info(0);
-    upgtr_impl< value_type >::compute( uplo, ap, tau, q, info,
+    upgtr_impl< value_type >::invoke( uplo, ap, tau, q, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upmtr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upmtr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/computational/upmtr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_COMPUTATIONAL_UPMTR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -58,12 +56,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorAP, typename VectorTAU, typename MatrixC,
             typename WORK >
-    static void compute( char const side, char const uplo, char const trans,
+    static void invoke( char const side, char const uplo, char const trans,
             VectorAP& ap, VectorTAU& tau, MatrixC& c, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -90,20 +88,20 @@
 
     // minimal workspace specialization
     template< typename VectorAP, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const uplo, char const trans,
+    static void invoke( char const side, char const uplo, char const trans,
             VectorAP& ap, VectorTAU& tau, MatrixC& c, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
-        compute( side, uplo, trans, ap, tau, c, info, workspace( tmp_work ) );
+        invoke( side, uplo, trans, ap, tau, c, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorAP, typename VectorTAU, typename MatrixC >
-    static void compute( char const side, char const uplo, char const trans,
+    static void invoke( char const side, char const uplo, char const trans,
             VectorAP& ap, VectorTAU& tau, MatrixC& c, integer_t& info,
             optimal_workspace work ) {
-        compute( side, uplo, trans, ap, tau, c, info, minimal_workspace() );
+        invoke( side, uplo, trans, ap, tau, c, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -120,7 +118,7 @@
         Workspace work ) {
     typedef typename traits::vector_traits< VectorAP >::value_type value_type;
     integer_t info(0);
-    upmtr_impl< value_type >::compute( side, uplo, trans, ap, tau, c,
+    upmtr_impl< value_type >::invoke( side, uplo, trans, ap, tau, c,
             info, work );
     return info;
 }
@@ -131,7 +129,7 @@
         char const trans, VectorAP& ap, VectorTAU& tau, MatrixC& c ) {
     typedef typename traits::vector_traits< VectorAP >::value_type value_type;
     integer_t info(0);
-    upmtr_impl< value_type >::compute( side, uplo, trans, ap, tau, c,
+    upmtr_impl< value_type >::invoke( side, uplo, trans, ap, tau, c,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cgesv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cgesv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/cgesv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_CGESV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -52,13 +50,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename WORK, typename SWORK >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             integer_t& iter, integer_t& info, detail::workspace2< WORK,
             SWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -95,22 +92,22 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB,
             typename MatrixX >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             integer_t& iter, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
         traits::detail::array< value_type > tmp_swork( min_size_swork(
                 traits::matrix_num_columns(a),
                 traits::matrix_num_columns(b) ) );
-        compute( a, ipiv, b, x, iter, info, workspace( tmp_work, tmp_swork ) );
+        invoke( a, ipiv, b, x, iter, info, workspace( tmp_work, tmp_swork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB,
             typename MatrixX >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             integer_t& iter, integer_t& info, optimal_workspace work ) {
-        compute( a, ipiv, b, x, iter, info, minimal_workspace() );
+        invoke( a, ipiv, b, x, iter, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -131,7 +128,7 @@
         MatrixX& x, integer_t& iter, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    cgesv_impl< value_type >::compute( a, ipiv, b, x, iter, info, work );
+    cgesv_impl< value_type >::invoke( a, ipiv, b, x, iter, info, work );
     return info;
 }
 
@@ -142,7 +139,7 @@
         MatrixX& x, integer_t& iter ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    cgesv_impl< value_type >::compute( a, ipiv, b, x, iter, info,
+    cgesv_impl< value_type >::invoke( a, ipiv, b, x, iter, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GBSV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -66,12 +64,17 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
+
+    // uniform high-level dispatching-function
+    template< typename MatrixA, typename MatrixB, typename VectorP >
+    static void solve( MatrixA& A, MatrixB& B, VectorP& pivot,
+            integer_t& info ) {
+        invoke( A, pivot, B, info );
+    }
 
     // templated specialization
     template< typename MatrixAB, typename VectorIPIV, typename MatrixB >
-    static void compute( integer_t const kl, integer_t const ku, MatrixAB& ab,
+    static void invoke( integer_t const kl, integer_t const ku, MatrixAB& ab,
             VectorIPIV& ipiv, MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixAB >::value_type, typename traits::matrix_traits<
@@ -100,7 +103,7 @@
         MatrixAB& ab, VectorIPIV& ipiv, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    gbsv_impl< value_type >::compute( kl, ku, ab, ipiv, b, info );
+    gbsv_impl< value_type >::invoke( kl, ku, ab, ipiv, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gbsvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GBSVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -99,15 +97,14 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename VectorIPIV,
             typename VectorR, typename VectorC, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename IWORK >
-    static void compute( char const fact, char const trans, integer_t const n,
+    static void invoke( char const fact, char const trans, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             MatrixAFB& afb, VectorIPIV& ipiv, char& equed, VectorR& r,
             VectorC& c, MatrixB& b, MatrixX& x, real_type& rcond,
@@ -169,7 +166,7 @@
     template< typename MatrixAB, typename MatrixAFB, typename VectorIPIV,
             typename VectorR, typename VectorC, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, char const trans, integer_t const n,
+    static void invoke( char const fact, char const trans, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             MatrixAFB& afb, VectorIPIV& ipiv, char& equed, VectorR& r,
             VectorC& c, MatrixB& b, MatrixX& x, real_type& rcond,
@@ -177,7 +174,7 @@
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( fact, trans, n, kl, ku, ab, afb, ipiv, equed, r, c, b, x,
+        invoke( fact, trans, n, kl, ku, ab, afb, ipiv, equed, r, c, b, x,
                 rcond, ferr, berr, info, workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -185,13 +182,13 @@
     template< typename MatrixAB, typename MatrixAFB, typename VectorIPIV,
             typename VectorR, typename VectorC, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, char const trans, integer_t const n,
+    static void invoke( char const fact, char const trans, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             MatrixAFB& afb, VectorIPIV& ipiv, char& equed, VectorR& r,
             VectorC& c, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( fact, trans, n, kl, ku, ab, afb, ipiv, equed, r, c, b, x,
+        invoke( fact, trans, n, kl, ku, ab, afb, ipiv, equed, r, c, b, x,
                 rcond, ferr, berr, info, minimal_workspace() );
     }
 
@@ -210,15 +207,14 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename VectorIPIV,
             typename VectorR, typename VectorC, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename RWORK >
-    static void compute( char const fact, char const trans, integer_t const n,
+    static void invoke( char const fact, char const trans, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             MatrixAFB& afb, VectorIPIV& ipiv, char& equed, VectorR& r,
             VectorC& c, MatrixB& b, MatrixX& x, real_type& rcond,
@@ -277,7 +273,7 @@
     template< typename MatrixAB, typename MatrixAFB, typename VectorIPIV,
             typename VectorR, typename VectorC, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, char const trans, integer_t const n,
+    static void invoke( char const fact, char const trans, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             MatrixAFB& afb, VectorIPIV& ipiv, char& equed, VectorR& r,
             VectorC& c, MatrixB& b, MatrixX& x, real_type& rcond,
@@ -285,7 +281,7 @@
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( fact, trans, n, kl, ku, ab, afb, ipiv, equed, r, c, b, x,
+        invoke( fact, trans, n, kl, ku, ab, afb, ipiv, equed, r, c, b, x,
                 rcond, ferr, berr, info, workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -293,13 +289,13 @@
     template< typename MatrixAB, typename MatrixAFB, typename VectorIPIV,
             typename VectorR, typename VectorC, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, char const trans, integer_t const n,
+    static void invoke( char const fact, char const trans, integer_t const n,
             integer_t const kl, integer_t const ku, MatrixAB& ab,
             MatrixAFB& afb, VectorIPIV& ipiv, char& equed, VectorR& r,
             VectorC& c, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( fact, trans, n, kl, ku, ab, afb, ipiv, equed, r, c, b, x,
+        invoke( fact, trans, n, kl, ku, ab, afb, ipiv, equed, r, c, b, x,
                 rcond, ferr, berr, info, minimal_workspace() );
     }
 
@@ -326,7 +322,7 @@
         VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    gbsvx_impl< value_type >::compute( fact, trans, n, kl, ku, ab, afb,
+    gbsvx_impl< value_type >::invoke( fact, trans, n, kl, ku, ab, afb,
             ipiv, equed, r, c, b, x, rcond, ferr, berr, info, work );
     return info;
 }
@@ -343,7 +339,7 @@
         VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    gbsvx_impl< value_type >::compute( fact, trans, n, kl, ku, ab, afb,
+    gbsvx_impl< value_type >::invoke( fact, trans, n, kl, ku, ab, afb,
             ipiv, equed, r, c, b, x, rcond, ferr, berr, info,
             optimal_workspace() );
     return info;
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gees.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gees.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gees.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GEES_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -88,12 +86,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVS, typename WORK, typename BWORK >
-    static void compute( char const jobvs, char const sort, logical_t* select,
+    static void invoke( char const jobvs, char const sort, logical_t* select,
             MatrixA& a, integer_t& sdim, VectorWR& wr, VectorWI& wi,
             MatrixVS& vs, integer_t& info, detail::workspace2< WORK,
             BWORK > work ) {
@@ -131,21 +129,21 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVS >
-    static void compute( char const jobvs, char const sort, logical_t* select,
+    static void invoke( char const jobvs, char const sort, logical_t* select,
             MatrixA& a, integer_t& sdim, VectorWR& wr, VectorWI& wi,
             MatrixVS& vs, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< bool > tmp_bwork( min_size_bwork(
                 traits::matrix_num_columns(a), sort ) );
-        compute( jobvs, sort, select, a, sdim, wr, wi, vs, info,
+        invoke( jobvs, sort, select, a, sdim, wr, wi, vs, info,
                 workspace( tmp_work, tmp_bwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVS >
-    static void compute( char const jobvs, char const sort, logical_t* select,
+    static void invoke( char const jobvs, char const sort, logical_t* select,
             MatrixA& a, integer_t& sdim, VectorWR& wr, VectorWI& wi,
             MatrixVS& vs, integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
@@ -159,7 +157,7 @@
                 &opt_size_work, -1, traits::vector_storage(tmp_bwork), info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobvs, sort, select, a, sdim, wr, wi, vs, info,
+        invoke( jobvs, sort, select, a, sdim, wr, wi, vs, info,
                 workspace( tmp_work, tmp_bwork ) );
     }
 
@@ -181,12 +179,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixVS,
             typename WORK, typename RWORK, typename BWORK >
-    static void compute( char const jobvs, char const sort, logical_t* select,
+    static void invoke( char const jobvs, char const sort, logical_t* select,
             MatrixA& a, integer_t& sdim, VectorW& w, MatrixVS& vs,
             integer_t& info, detail::workspace3< WORK, RWORK, BWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -220,7 +218,7 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixVS >
-    static void compute( char const jobvs, char const sort, logical_t* select,
+    static void invoke( char const jobvs, char const sort, logical_t* select,
             MatrixA& a, integer_t& sdim, VectorW& w, MatrixVS& vs,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
@@ -229,13 +227,13 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< bool > tmp_bwork( min_size_bwork(
                 traits::matrix_num_columns(a), sort ) );
-        compute( jobvs, sort, select, a, sdim, w, vs, info,
+        invoke( jobvs, sort, select, a, sdim, w, vs, info,
                 workspace( tmp_work, tmp_rwork, tmp_bwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixVS >
-    static void compute( char const jobvs, char const sort, logical_t* select,
+    static void invoke( char const jobvs, char const sort, logical_t* select,
             MatrixA& a, integer_t& sdim, VectorW& w, MatrixVS& vs,
             integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
@@ -251,7 +249,7 @@
                 traits::vector_storage(tmp_bwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobvs, sort, select, a, sdim, w, vs, info,
+        invoke( jobvs, sort, select, a, sdim, w, vs, info,
                 workspace( tmp_work, tmp_rwork, tmp_bwork ) );
     }
 
@@ -280,7 +278,7 @@
         VectorWI& wi, MatrixVS& vs, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gees_impl< value_type >::compute( jobvs, sort, select, a, sdim, wr,
+    gees_impl< value_type >::invoke( jobvs, sort, select, a, sdim, wr,
             wi, vs, info, work );
     return info;
 }
@@ -293,7 +291,7 @@
         VectorWI& wi, MatrixVS& vs ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gees_impl< value_type >::compute( jobvs, sort, select, a, sdim, wr,
+    gees_impl< value_type >::invoke( jobvs, sort, select, a, sdim, wr,
             wi, vs, info, optimal_workspace() );
     return info;
 }
@@ -305,7 +303,7 @@
         MatrixVS& vs, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gees_impl< value_type >::compute( jobvs, sort, select, a, sdim, w,
+    gees_impl< value_type >::invoke( jobvs, sort, select, a, sdim, w,
             vs, info, work );
     return info;
 }
@@ -317,7 +315,7 @@
         MatrixVS& vs ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gees_impl< value_type >::compute( jobvs, sort, select, a, sdim, w,
+    gees_impl< value_type >::invoke( jobvs, sort, select, a, sdim, w,
             vs, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geesx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geesx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geesx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GEESX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -92,12 +90,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVS, typename WORK, typename IWORK, typename BWORK >
-    static void compute( char const jobvs, char const sort, logical_t* select,
+    static void invoke( char const jobvs, char const sort, logical_t* select,
             char const sense, MatrixA& a, integer_t& sdim, VectorWR& wr,
             VectorWI& wi, MatrixVS& vs, real_type& rconde, real_type& rcondv,
             integer_t& info, detail::workspace3< WORK, IWORK, BWORK > work ) {
@@ -143,7 +141,7 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVS >
-    static void compute( char const jobvs, char const sort, logical_t* select,
+    static void invoke( char const jobvs, char const sort, logical_t* select,
             char const sense, MatrixA& a, integer_t& sdim, VectorWR& wr,
             VectorWI& wi, MatrixVS& vs, real_type& rconde, real_type& rcondv,
             integer_t& info, minimal_workspace work ) {
@@ -153,14 +151,14 @@
                 traits::matrix_num_columns(a), sense ) );
         traits::detail::array< bool > tmp_bwork( min_size_bwork(
                 traits::matrix_num_columns(a), sort ) );
-        compute( jobvs, sort, select, sense, a, sdim, wr, wi, vs, rconde,
+        invoke( jobvs, sort, select, sense, a, sdim, wr, wi, vs, rconde,
                 rcondv, info, workspace( tmp_work, tmp_iwork, tmp_bwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVS >
-    static void compute( char const jobvs, char const sort, logical_t* select,
+    static void invoke( char const jobvs, char const sort, logical_t* select,
             char const sense, MatrixA& a, integer_t& sdim, VectorWR& wr,
             VectorWI& wi, MatrixVS& vs, real_type& rconde, real_type& rcondv,
             integer_t& info, optimal_workspace work ) {
@@ -178,7 +176,7 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobvs, sort, select, sense, a, sdim, wr, wi, vs, rconde,
+        invoke( jobvs, sort, select, sense, a, sdim, wr, wi, vs, rconde,
                 rcondv, info, workspace( tmp_work, tmp_iwork, tmp_bwork ) );
     }
 
@@ -210,12 +208,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixVS,
             typename WORK, typename RWORK, typename BWORK >
-    static void compute( char const jobvs, char const sort, logical_t* select,
+    static void invoke( char const jobvs, char const sort, logical_t* select,
             char const sense, MatrixA& a, integer_t& sdim, VectorW& w,
             MatrixVS& vs, real_type& rconde, real_type& rcondv,
             integer_t& info, detail::workspace3< WORK, RWORK, BWORK > work ) {
@@ -253,7 +251,7 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixVS >
-    static void compute( char const jobvs, char const sort, logical_t* select,
+    static void invoke( char const jobvs, char const sort, logical_t* select,
             char const sense, MatrixA& a, integer_t& sdim, VectorW& w,
             MatrixVS& vs, real_type& rconde, real_type& rcondv,
             integer_t& info, minimal_workspace work ) {
@@ -263,13 +261,13 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< bool > tmp_bwork( min_size_bwork(
                 traits::matrix_num_columns(a), sort ) );
-        compute( jobvs, sort, select, sense, a, sdim, w, vs, rconde, rcondv,
+        invoke( jobvs, sort, select, sense, a, sdim, w, vs, rconde, rcondv,
                 info, workspace( tmp_work, tmp_rwork, tmp_bwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixVS >
-    static void compute( char const jobvs, char const sort, logical_t* select,
+    static void invoke( char const jobvs, char const sort, logical_t* select,
             char const sense, MatrixA& a, integer_t& sdim, VectorW& w,
             MatrixVS& vs, real_type& rconde, real_type& rcondv,
             integer_t& info, optimal_workspace work ) {
@@ -287,7 +285,7 @@
                 traits::vector_storage(tmp_bwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobvs, sort, select, sense, a, sdim, w, vs, rconde, rcondv,
+        invoke( jobvs, sort, select, sense, a, sdim, w, vs, rconde, rcondv,
                 info, workspace( tmp_work, tmp_rwork, tmp_bwork ) );
     }
 
@@ -322,7 +320,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geesx_impl< value_type >::compute( jobvs, sort, select, sense, a,
+    geesx_impl< value_type >::invoke( jobvs, sort, select, sense, a,
             sdim, wr, wi, vs, rconde, rcondv, info, work );
     return info;
 }
@@ -337,7 +335,7 @@
         typename traits::matrix_traits< MatrixA >::value_type& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geesx_impl< value_type >::compute( jobvs, sort, select, sense, a,
+    geesx_impl< value_type >::invoke( jobvs, sort, select, sense, a,
             sdim, wr, wi, vs, rconde, rcondv, info, optimal_workspace() );
     return info;
 }
@@ -351,7 +349,7 @@
         MatrixA >::value_type& rcondv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geesx_impl< value_type >::compute( jobvs, sort, select, sense, a,
+    geesx_impl< value_type >::invoke( jobvs, sort, select, sense, a,
             sdim, w, vs, rconde, rcondv, info, work );
     return info;
 }
@@ -365,7 +363,7 @@
         MatrixA >::value_type& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geesx_impl< value_type >::compute( jobvs, sort, select, sense, a,
+    geesx_impl< value_type >::invoke( jobvs, sort, select, sense, a,
             sdim, w, vs, rconde, rcondv, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geev.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geev.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GEEV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -87,12 +85,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVL, typename MatrixVR, typename WORK >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             VectorWR& wr, VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -130,19 +128,18 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVL, typename MatrixVR >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             VectorWR& wr, VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( jobvl,
                 jobvr, traits::matrix_num_columns(a) ) );
-        compute( jobvl, jobvr, a, wr, wi, vl, vr, info,
-                workspace( tmp_work ) );
+        invoke( jobvl, jobvr, a, wr, wi, vl, vr, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVL, typename MatrixVR >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             VectorWR& wr, VectorWI& wi, MatrixVL& vl, MatrixVR& vr,
             integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
@@ -154,8 +151,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobvl, jobvr, a, wr, wi, vl, vr, info,
-                workspace( tmp_work ) );
+        invoke( jobvl, jobvr, a, wr, wi, vl, vr, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( char const jobvl, char const jobvr,
@@ -173,12 +169,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixVL,
             typename MatrixVR, typename WORK, typename RWORK >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             VectorW& w, MatrixVL& vl, MatrixVR& vr, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -214,21 +210,21 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixVL,
             typename MatrixVR >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             VectorW& w, MatrixVL& vl, MatrixVR& vr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( jobvl, jobvr, a, w, vl, vr, info, workspace( tmp_work,
+        invoke( jobvl, jobvr, a, w, vl, vr, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixVL,
             typename MatrixVR >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             VectorW& w, MatrixVL& vl, MatrixVR& vr, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -242,7 +238,7 @@
                 traits::vector_storage(tmp_rwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobvl, jobvr, a, w, vl, vr, info, workspace( tmp_work,
+        invoke( jobvl, jobvr, a, w, vl, vr, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
@@ -264,7 +260,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geev_impl< value_type >::compute( jobvl, jobvr, a, wr, wi, vl, vr,
+    geev_impl< value_type >::invoke( jobvl, jobvr, a, wr, wi, vl, vr,
             info, work );
     return info;
 }
@@ -276,7 +272,7 @@
         VectorWR& wr, VectorWI& wi, MatrixVL& vl, MatrixVR& vr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geev_impl< value_type >::compute( jobvl, jobvr, a, wr, wi, vl, vr,
+    geev_impl< value_type >::invoke( jobvl, jobvr, a, wr, wi, vl, vr,
             info, optimal_workspace() );
     return info;
 }
@@ -287,7 +283,7 @@
         VectorW& w, MatrixVL& vl, MatrixVR& vr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geev_impl< value_type >::compute( jobvl, jobvr, a, w, vl, vr, info,
+    geev_impl< value_type >::invoke( jobvl, jobvr, a, w, vl, vr, info,
             work );
     return info;
 }
@@ -299,7 +295,7 @@
         VectorW& w, MatrixVL& vl, MatrixVR& vr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geev_impl< value_type >::compute( jobvl, jobvr, a, w, vl, vr, info,
+    geev_impl< value_type >::invoke( jobvl, jobvr, a, w, vl, vr, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/geevx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GEEVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -98,19 +96,19 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVL, typename MatrixVR, typename VectorSCALE,
             typename VectorRCONDE, typename VectorRCONDV, typename WORK,
             typename IWORK >
-    static void compute( char const balanc, char const jobvl,
-            char const jobvr, char const sense, MatrixA& a, VectorWR& wr,
-            VectorWI& wi, MatrixVL& vl, MatrixVR& vr, integer_t& ilo,
-            integer_t& ihi, VectorSCALE& scale, real_type& abnrm,
-            VectorRCONDE& rconde, VectorRCONDV& rcondv, integer_t& info,
-            detail::workspace2< WORK, IWORK > work ) {
+    static void invoke( char const balanc, char const jobvl, char const jobvr,
+            char const sense, MatrixA& a, VectorWR& wr, VectorWI& wi,
+            MatrixVL& vl, MatrixVR& vr, integer_t& ilo, integer_t& ihi,
+            VectorSCALE& scale, real_type& abnrm, VectorRCONDE& rconde,
+            VectorRCONDV& rcondv, integer_t& info, detail::workspace2< WORK,
+            IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
                 VectorWR >::value_type >::value) );
@@ -174,17 +172,16 @@
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVL, typename MatrixVR, typename VectorSCALE,
             typename VectorRCONDE, typename VectorRCONDV >
-    static void compute( char const balanc, char const jobvl,
-            char const jobvr, char const sense, MatrixA& a, VectorWR& wr,
-            VectorWI& wi, MatrixVL& vl, MatrixVR& vr, integer_t& ilo,
-            integer_t& ihi, VectorSCALE& scale, real_type& abnrm,
-            VectorRCONDE& rconde, VectorRCONDV& rcondv, integer_t& info,
-            minimal_workspace work ) {
+    static void invoke( char const balanc, char const jobvl, char const jobvr,
+            char const sense, MatrixA& a, VectorWR& wr, VectorWI& wi,
+            MatrixVL& vl, MatrixVR& vr, integer_t& ilo, integer_t& ihi,
+            VectorSCALE& scale, real_type& abnrm, VectorRCONDE& rconde,
+            VectorRCONDV& rcondv, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( sense,
                 jobvl, jobvr, traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( sense,
                 traits::matrix_num_columns(a) ) );
-        compute( balanc, jobvl, jobvr, sense, a, wr, wi, vl, vr, ilo, ihi,
+        invoke( balanc, jobvl, jobvr, sense, a, wr, wi, vl, vr, ilo, ihi,
                 scale, abnrm, rconde, rcondv, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
@@ -193,12 +190,11 @@
     template< typename MatrixA, typename VectorWR, typename VectorWI,
             typename MatrixVL, typename MatrixVR, typename VectorSCALE,
             typename VectorRCONDE, typename VectorRCONDV >
-    static void compute( char const balanc, char const jobvl,
-            char const jobvr, char const sense, MatrixA& a, VectorWR& wr,
-            VectorWI& wi, MatrixVL& vl, MatrixVR& vr, integer_t& ilo,
-            integer_t& ihi, VectorSCALE& scale, real_type& abnrm,
-            VectorRCONDE& rconde, VectorRCONDV& rcondv, integer_t& info,
-            optimal_workspace work ) {
+    static void invoke( char const balanc, char const jobvl, char const jobvr,
+            char const sense, MatrixA& a, VectorWR& wr, VectorWI& wi,
+            MatrixVL& vl, MatrixVR& vr, integer_t& ilo, integer_t& ihi,
+            VectorSCALE& scale, real_type& abnrm, VectorRCONDE& rconde,
+            VectorRCONDV& rcondv, integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( sense,
                 traits::matrix_num_columns(a) ) );
@@ -214,7 +210,7 @@
                 traits::vector_storage(tmp_iwork), info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( balanc, jobvl, jobvr, sense, a, wr, wi, vl, vr, ilo, ihi,
+        invoke( balanc, jobvl, jobvr, sense, a, wr, wi, vl, vr, ilo, ihi,
                 scale, abnrm, rconde, rcondv, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
@@ -244,18 +240,17 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixVL,
             typename MatrixVR, typename VectorSCALE, typename VectorRCONDE,
             typename VectorRCONDV, typename WORK, typename RWORK >
-    static void compute( char const balanc, char const jobvl,
-            char const jobvr, char const sense, MatrixA& a, VectorW& w,
-            MatrixVL& vl, MatrixVR& vr, integer_t& ilo, integer_t& ihi,
-            VectorSCALE& scale, real_type& abnrm, VectorRCONDE& rconde,
-            VectorRCONDV& rcondv, integer_t& info, detail::workspace2< WORK,
-            RWORK > work ) {
+    static void invoke( char const balanc, char const jobvl, char const jobvr,
+            char const sense, MatrixA& a, VectorW& w, MatrixVL& vl,
+            MatrixVR& vr, integer_t& ilo, integer_t& ihi, VectorSCALE& scale,
+            real_type& abnrm, VectorRCONDE& rconde, VectorRCONDV& rcondv,
+            integer_t& info, detail::workspace2< WORK, RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorSCALE >::value_type, typename traits::vector_traits<
                 VectorRCONDE >::value_type >::value) );
@@ -309,16 +304,16 @@
     template< typename MatrixA, typename VectorW, typename MatrixVL,
             typename MatrixVR, typename VectorSCALE, typename VectorRCONDE,
             typename VectorRCONDV >
-    static void compute( char const balanc, char const jobvl,
-            char const jobvr, char const sense, MatrixA& a, VectorW& w,
-            MatrixVL& vl, MatrixVR& vr, integer_t& ilo, integer_t& ihi,
-            VectorSCALE& scale, real_type& abnrm, VectorRCONDE& rconde,
-            VectorRCONDV& rcondv, integer_t& info, minimal_workspace work ) {
+    static void invoke( char const balanc, char const jobvl, char const jobvr,
+            char const sense, MatrixA& a, VectorW& w, MatrixVL& vl,
+            MatrixVR& vr, integer_t& ilo, integer_t& ihi, VectorSCALE& scale,
+            real_type& abnrm, VectorRCONDE& rconde, VectorRCONDV& rcondv,
+            integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( sense,
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( balanc, jobvl, jobvr, sense, a, w, vl, vr, ilo, ihi, scale,
+        invoke( balanc, jobvl, jobvr, sense, a, w, vl, vr, ilo, ihi, scale,
                 abnrm, rconde, rcondv, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
@@ -327,11 +322,11 @@
     template< typename MatrixA, typename VectorW, typename MatrixVL,
             typename MatrixVR, typename VectorSCALE, typename VectorRCONDE,
             typename VectorRCONDV >
-    static void compute( char const balanc, char const jobvl,
-            char const jobvr, char const sense, MatrixA& a, VectorW& w,
-            MatrixVL& vl, MatrixVR& vr, integer_t& ilo, integer_t& ihi,
-            VectorSCALE& scale, real_type& abnrm, VectorRCONDE& rconde,
-            VectorRCONDV& rcondv, integer_t& info, optimal_workspace work ) {
+    static void invoke( char const balanc, char const jobvl, char const jobvr,
+            char const sense, MatrixA& a, VectorW& w, MatrixVL& vl,
+            MatrixVR& vr, integer_t& ilo, integer_t& ihi, VectorSCALE& scale,
+            real_type& abnrm, VectorRCONDE& rconde, VectorRCONDV& rcondv,
+            integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
@@ -346,7 +341,7 @@
                 traits::vector_storage(tmp_rwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( balanc, jobvl, jobvr, sense, a, w, vl, vr, ilo, ihi, scale,
+        invoke( balanc, jobvl, jobvr, sense, a, w, vl, vr, ilo, ihi, scale,
                 abnrm, rconde, rcondv, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
@@ -376,9 +371,8 @@
         VectorRCONDV& rcondv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geevx_impl< value_type >::compute( balanc, jobvl, jobvr, sense, a,
-            wr, wi, vl, vr, ilo, ihi, scale, abnrm, rconde, rcondv, info,
-            work );
+    geevx_impl< value_type >::invoke( balanc, jobvl, jobvr, sense, a, wr,
+            wi, vl, vr, ilo, ihi, scale, abnrm, rconde, rcondv, info, work );
     return info;
 }
 
@@ -394,8 +388,8 @@
         VectorRCONDV& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geevx_impl< value_type >::compute( balanc, jobvl, jobvr, sense, a,
-            wr, wi, vl, vr, ilo, ihi, scale, abnrm, rconde, rcondv, info,
+    geevx_impl< value_type >::invoke( balanc, jobvl, jobvr, sense, a, wr,
+            wi, vl, vr, ilo, ihi, scale, abnrm, rconde, rcondv, info,
             optimal_workspace() );
     return info;
 }
@@ -411,7 +405,7 @@
         VectorRCONDV& rcondv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geevx_impl< value_type >::compute( balanc, jobvl, jobvr, sense, a, w,
+    geevx_impl< value_type >::invoke( balanc, jobvl, jobvr, sense, a, w,
             vl, vr, ilo, ihi, scale, abnrm, rconde, rcondv, info, work );
     return info;
 }
@@ -428,7 +422,7 @@
         VectorRCONDV& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    geevx_impl< value_type >::compute( balanc, jobvl, jobvr, sense, a, w,
+    geevx_impl< value_type >::invoke( balanc, jobvl, jobvr, sense, a, w,
             vl, vr, ilo, ihi, scale, abnrm, rconde, rcondv, info,
             optimal_workspace() );
     return info;
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gegv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gegv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gegv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GEGV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -92,14 +90,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixVL,
             typename MatrixVR, typename WORK >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             MatrixB& b, VectorALPHAR& alphar, VectorALPHAI& alphai,
             VectorBETA& beta, MatrixVL& vl, MatrixVR& vr, integer_t& info,
             detail::workspace1< WORK > work ) {
@@ -149,13 +146,13 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixVL,
             typename MatrixVR >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             MatrixB& b, VectorALPHAR& alphar, VectorALPHAI& alphai,
             VectorBETA& beta, MatrixVL& vl, MatrixVR& vr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
-        compute( jobvl, jobvr, a, b, alphar, alphai, beta, vl, vr, info,
+        invoke( jobvl, jobvr, a, b, alphar, alphai, beta, vl, vr, info,
                 workspace( tmp_work ) );
     }
 
@@ -163,7 +160,7 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixVL,
             typename MatrixVR >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             MatrixB& b, VectorALPHAR& alphar, VectorALPHAI& alphai,
             VectorBETA& beta, MatrixVL& vl, MatrixVR& vr, integer_t& info,
             optimal_workspace work ) {
@@ -178,7 +175,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobvl, jobvr, a, b, alphar, alphai, beta, vl, vr, info,
+        invoke( jobvl, jobvr, a, b, alphar, alphai, beta, vl, vr, info,
                 workspace( tmp_work ) );
     }
 
@@ -193,14 +190,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVL, typename MatrixVR,
             typename WORK, typename RWORK >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             MatrixB& b, VectorALPHA& alpha, VectorBETA& beta, MatrixVL& vl,
             MatrixVR& vr, integer_t& info, detail::workspace2< WORK,
             RWORK > work ) {
@@ -248,21 +244,21 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVL, typename MatrixVR >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             MatrixB& b, VectorALPHA& alpha, VectorBETA& beta, MatrixVL& vl,
             MatrixVR& vr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( jobvl, jobvr, a, b, alpha, beta, vl, vr, info,
+        invoke( jobvl, jobvr, a, b, alpha, beta, vl, vr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVL, typename MatrixVR >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             MatrixB& b, VectorALPHA& alpha, VectorBETA& beta, MatrixVL& vl,
             MatrixVR& vr, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
@@ -277,7 +273,7 @@
                 &opt_size_work, -1, traits::vector_storage(tmp_rwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobvl, jobvr, a, b, alpha, beta, vl, vr, info,
+        invoke( jobvl, jobvr, a, b, alpha, beta, vl, vr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -300,8 +296,8 @@
         VectorBETA& beta, MatrixVL& vl, MatrixVR& vr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gegv_impl< value_type >::compute( jobvl, jobvr, a, b, alphar,
-            alphai, beta, vl, vr, info, work );
+    gegv_impl< value_type >::invoke( jobvl, jobvr, a, b, alphar, alphai,
+            beta, vl, vr, info, work );
     return info;
 }
 
@@ -314,8 +310,8 @@
         VectorBETA& beta, MatrixVL& vl, MatrixVR& vr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gegv_impl< value_type >::compute( jobvl, jobvr, a, b, alphar,
-            alphai, beta, vl, vr, info, optimal_workspace() );
+    gegv_impl< value_type >::invoke( jobvl, jobvr, a, b, alphar, alphai,
+            beta, vl, vr, info, optimal_workspace() );
     return info;
 }
 // template function to call gegv
@@ -327,7 +323,7 @@
         MatrixVR& vr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gegv_impl< value_type >::compute( jobvl, jobvr, a, b, alpha, beta,
+    gegv_impl< value_type >::invoke( jobvl, jobvr, a, b, alpha, beta,
             vl, vr, info, work );
     return info;
 }
@@ -340,7 +336,7 @@
         MatrixVR& vr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gegv_impl< value_type >::compute( jobvl, jobvr, a, b, alpha, beta,
+    gegv_impl< value_type >::invoke( jobvl, jobvr, a, b, alpha, beta,
             vl, vr, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gels.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gels.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gels.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GELS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -80,12 +78,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename WORK >
-    static void compute( char const trans, MatrixA& a, MatrixB& b,
+    static void invoke( char const trans, MatrixA& a, MatrixB& b,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -113,17 +110,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB >
-    static void compute( char const trans, MatrixA& a, MatrixB& b,
+    static void invoke( char const trans, MatrixA& a, MatrixB& b,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_rows(a), traits::matrix_num_columns(a),
                 traits::matrix_num_columns(b) ) );
-        compute( trans, a, b, info, workspace( tmp_work ) );
+        invoke( trans, a, b, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB >
-    static void compute( char const trans, MatrixA& a, MatrixB& b,
+    static void invoke( char const trans, MatrixA& a, MatrixB& b,
             integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         detail::gels( trans, traits::matrix_num_rows(a),
@@ -133,7 +130,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( trans, a, b, info, workspace( tmp_work ) );
+        invoke( trans, a, b, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n,
@@ -149,12 +146,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename WORK >
-    static void compute( char const trans, MatrixA& a, MatrixB& b,
+    static void invoke( char const trans, MatrixA& a, MatrixB& b,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -182,17 +178,17 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB >
-    static void compute( char const trans, MatrixA& a, MatrixB& b,
+    static void invoke( char const trans, MatrixA& a, MatrixB& b,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_rows(a), traits::matrix_num_columns(a),
                 traits::matrix_num_columns(b) ) );
-        compute( trans, a, b, info, workspace( tmp_work ) );
+        invoke( trans, a, b, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB >
-    static void compute( char const trans, MatrixA& a, MatrixB& b,
+    static void invoke( char const trans, MatrixA& a, MatrixB& b,
             integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         detail::gels( trans, traits::matrix_num_rows(a),
@@ -202,7 +198,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( trans, a, b, info, workspace( tmp_work ) );
+        invoke( trans, a, b, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n,
@@ -219,7 +215,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gels_impl< value_type >::compute( trans, a, b, info, work );
+    gels_impl< value_type >::invoke( trans, a, b, info, work );
     return info;
 }
 
@@ -228,7 +224,7 @@
 inline integer_t gels( char const trans, MatrixA& a, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gels_impl< value_type >::compute( trans, a, b, info,
+    gels_impl< value_type >::invoke( trans, a, b, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,10 +15,8 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GELSD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/auxiliary/ilaenv.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -87,13 +85,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorS,
             typename WORK, typename IWORK >
-    static void compute( MatrixA& a, MatrixB& b, VectorS& s,
+    static void invoke( MatrixA& a, MatrixB& b, VectorS& s,
             real_type const rcond, integer_t& rank, integer_t& info,
             detail::workspace2< WORK, IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -136,7 +133,7 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorS >
-    static void compute( MatrixA& a, MatrixB& b, VectorS& s,
+    static void invoke( MatrixA& a, MatrixB& b, VectorS& s,
             real_type const rcond, integer_t& rank, integer_t& info,
             minimal_workspace work ) {
         integer_t minmn = std::min( traits::matrix_num_rows(a),
@@ -149,13 +146,12 @@
                 smlsiz, nlvl, traits::matrix_num_columns(b) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( minmn,
                 nlvl ) );
-        compute( a, b, s, rcond, rank, info, workspace( tmp_work,
-                tmp_iwork ) );
+        invoke( a, b, s, rcond, rank, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorS >
-    static void compute( MatrixA& a, MatrixB& b, VectorS& s,
+    static void invoke( MatrixA& a, MatrixB& b, VectorS& s,
             real_type const rcond, integer_t& rank, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -169,8 +165,7 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( a, b, s, rcond, rank, info, workspace( tmp_work,
-                tmp_iwork ) );
+        invoke( a, b, s, rcond, rank, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     static integer_t min_size_work( integer_t const minmn,
@@ -193,13 +188,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorS,
             typename WORK, typename RWORK, typename IWORK >
-    static void compute( MatrixA& a, MatrixB& b, VectorS& s,
+    static void invoke( MatrixA& a, MatrixB& b, VectorS& s,
             real_type const rcond, integer_t& rank, integer_t& info,
             detail::workspace3< WORK, RWORK, IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -242,7 +236,7 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorS >
-    static void compute( MatrixA& a, MatrixB& b, VectorS& s,
+    static void invoke( MatrixA& a, MatrixB& b, VectorS& s,
             real_type const rcond, integer_t& rank, integer_t& info,
             minimal_workspace work ) {
         integer_t minmn = std::min( traits::matrix_num_rows(a),
@@ -257,13 +251,13 @@
                 smlsiz, nlvl, traits::matrix_num_columns(b) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( minmn,
                 nlvl ) );
-        compute( a, b, s, rcond, rank, info, workspace( tmp_work, tmp_rwork,
+        invoke( a, b, s, rcond, rank, info, workspace( tmp_work, tmp_rwork,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorS >
-    static void compute( MatrixA& a, MatrixB& b, VectorS& s,
+    static void invoke( MatrixA& a, MatrixB& b, VectorS& s,
             real_type const rcond, integer_t& rank, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -280,7 +274,7 @@
         traits::detail::array< real_type > tmp_rwork(
                 traits::detail::to_int( opt_size_rwork ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( a, b, s, rcond, rank, info, workspace( tmp_work, tmp_rwork,
+        invoke( a, b, s, rcond, rank, info, workspace( tmp_work, tmp_rwork,
                 tmp_iwork ) );
     }
 
@@ -312,7 +306,7 @@
         integer_t& rank, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gelsd_impl< value_type >::compute( a, b, s, rcond, rank, info, work );
+    gelsd_impl< value_type >::invoke( a, b, s, rcond, rank, info, work );
     return info;
 }
 
@@ -323,7 +317,7 @@
         integer_t& rank ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gelsd_impl< value_type >::compute( a, b, s, rcond, rank, info,
+    gelsd_impl< value_type >::invoke( a, b, s, rcond, rank, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelss.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelss.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelss.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GELSS_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -83,13 +81,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorS,
             typename WORK >
-    static void compute( MatrixA& a, MatrixB& b, VectorS& s,
+    static void invoke( MatrixA& a, MatrixB& b, VectorS& s,
             real_type const rcond, integer_t& rank, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -124,18 +121,18 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorS >
-    static void compute( MatrixA& a, MatrixB& b, VectorS& s,
+    static void invoke( MatrixA& a, MatrixB& b, VectorS& s,
             real_type const rcond, integer_t& rank, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_rows(a), traits::matrix_num_columns(a),
                 traits::matrix_num_columns(b) ) );
-        compute( a, b, s, rcond, rank, info, workspace( tmp_work ) );
+        invoke( a, b, s, rcond, rank, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorS >
-    static void compute( MatrixA& a, MatrixB& b, VectorS& s,
+    static void invoke( MatrixA& a, MatrixB& b, VectorS& s,
             real_type const rcond, integer_t& rank, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -147,7 +144,7 @@
                 info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, b, s, rcond, rank, info, workspace( tmp_work ) );
+        invoke( a, b, s, rcond, rank, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n,
@@ -164,13 +161,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorS,
             typename WORK, typename RWORK >
-    static void compute( MatrixA& a, MatrixB& b, VectorS& s,
+    static void invoke( MatrixA& a, MatrixB& b, VectorS& s,
             real_type const rcond, integer_t& rank, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -207,7 +203,7 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorS >
-    static void compute( MatrixA& a, MatrixB& b, VectorS& s,
+    static void invoke( MatrixA& a, MatrixB& b, VectorS& s,
             real_type const rcond, integer_t& rank, integer_t& info,
             minimal_workspace work ) {
         integer_t minmn = std::min( traits::matrix_num_rows(a),
@@ -217,13 +213,12 @@
                 traits::matrix_num_columns(b), minmn ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 minmn ) );
-        compute( a, b, s, rcond, rank, info, workspace( tmp_work,
-                tmp_rwork ) );
+        invoke( a, b, s, rcond, rank, info, workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorS >
-    static void compute( MatrixA& a, MatrixB& b, VectorS& s,
+    static void invoke( MatrixA& a, MatrixB& b, VectorS& s,
             real_type const rcond, integer_t& rank, integer_t& info,
             optimal_workspace work ) {
         integer_t minmn = std::min( traits::matrix_num_rows(a),
@@ -239,8 +234,7 @@
                 traits::vector_storage(tmp_rwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, b, s, rcond, rank, info, workspace( tmp_work,
-                tmp_rwork ) );
+        invoke( a, b, s, rcond, rank, info, workspace( tmp_work, tmp_rwork ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n,
@@ -262,7 +256,7 @@
         integer_t& rank, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gelss_impl< value_type >::compute( a, b, s, rcond, rank, info, work );
+    gelss_impl< value_type >::invoke( a, b, s, rcond, rank, info, work );
     return info;
 }
 
@@ -273,7 +267,7 @@
         integer_t& rank ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gelss_impl< value_type >::compute( a, b, s, rcond, rank, info,
+    gelss_impl< value_type >::invoke( a, b, s, rcond, rank, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsy.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsy.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gelsy.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GELSY_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -84,13 +82,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorJPVT,
             typename WORK >
-    static void compute( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
+    static void invoke( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
             real_type const rcond, integer_t& rank, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -119,18 +116,18 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorJPVT >
-    static void compute( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
+    static void invoke( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
             real_type const rcond, integer_t& rank, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_rows(a), traits::matrix_num_columns(a),
                 traits::matrix_num_columns(b) ) );
-        compute( a, b, jpvt, rcond, rank, info, workspace( tmp_work ) );
+        invoke( a, b, jpvt, rcond, rank, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorJPVT >
-    static void compute( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
+    static void invoke( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
             real_type const rcond, integer_t& rank, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -142,7 +139,7 @@
                 info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, b, jpvt, rcond, rank, info, workspace( tmp_work ) );
+        invoke( a, b, jpvt, rcond, rank, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n,
@@ -158,13 +155,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorJPVT,
             typename WORK, typename RWORK >
-    static void compute( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
+    static void invoke( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
             real_type const rcond, integer_t& rank, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -196,7 +192,7 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorJPVT >
-    static void compute( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
+    static void invoke( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
             real_type const rcond, integer_t& rank, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
@@ -204,13 +200,13 @@
                 traits::matrix_num_columns(b) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( a, b, jpvt, rcond, rank, info, workspace( tmp_work,
+        invoke( a, b, jpvt, rcond, rank, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorJPVT >
-    static void compute( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
+    static void invoke( MatrixA& a, MatrixB& b, VectorJPVT& jpvt,
             real_type const rcond, integer_t& rank, integer_t& info,
             optimal_workspace work ) {
         value_type opt_size_work;
@@ -224,7 +220,7 @@
                 traits::vector_storage(tmp_rwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, b, jpvt, rcond, rank, info, workspace( tmp_work,
+        invoke( a, b, jpvt, rcond, rank, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
@@ -248,7 +244,7 @@
         integer_t& rank, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gelsy_impl< value_type >::compute( a, b, jpvt, rcond, rank, info,
+    gelsy_impl< value_type >::invoke( a, b, jpvt, rcond, rank, info,
             work );
     return info;
 }
@@ -260,7 +256,7 @@
         integer_t& rank ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gelsy_impl< value_type >::compute( a, b, jpvt, rcond, rank, info,
+    gelsy_impl< value_type >::invoke( a, b, jpvt, rcond, rank, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesdd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesdd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesdd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GESDD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -85,12 +83,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorS, typename MatrixU,
             typename MatrixVT, typename WORK, typename IWORK >
-    static void compute( char const jobz, MatrixA& a, VectorS& s, MatrixU& u,
+    static void invoke( char const jobz, MatrixA& a, VectorS& s, MatrixU& u,
             MatrixVT& vt, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -131,7 +129,7 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorS, typename MatrixU,
             typename MatrixVT >
-    static void compute( char const jobz, MatrixA& a, VectorS& s, MatrixU& u,
+    static void invoke( char const jobz, MatrixA& a, VectorS& s, MatrixU& u,
             MatrixVT& vt, integer_t& info, minimal_workspace work ) {
         integer_t minmn = std::min( traits::matrix_num_rows(a),
                 traits::matrix_num_columns(a) );
@@ -140,15 +138,15 @@
                 jobz, minmn ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 minmn ) );
-        compute( jobz, a, s, u, vt, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, a, s, u, vt, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorS, typename MatrixU,
             typename MatrixVT >
-    static void compute( char const jobz, MatrixA& a, VectorS& s, MatrixU& u,
+    static void invoke( char const jobz, MatrixA& a, VectorS& s, MatrixU& u,
             MatrixVT& vt, integer_t& info, optimal_workspace work ) {
-        compute( jobz, a, s, u, vt, info, minimal_workspace() );
+        invoke( jobz, a, s, u, vt, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n,
@@ -172,12 +170,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorS, typename MatrixU,
             typename MatrixVT, typename WORK, typename RWORK, typename IWORK >
-    static void compute( char const jobz, MatrixA& a, VectorS& s, MatrixU& u,
+    static void invoke( char const jobz, MatrixA& a, VectorS& s, MatrixU& u,
             MatrixVT& vt, integer_t& info, detail::workspace3< WORK, RWORK,
             IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -218,7 +216,7 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorS, typename MatrixU,
             typename MatrixVT >
-    static void compute( char const jobz, MatrixA& a, VectorS& s, MatrixU& u,
+    static void invoke( char const jobz, MatrixA& a, VectorS& s, MatrixU& u,
             MatrixVT& vt, integer_t& info, minimal_workspace work ) {
         integer_t minmn = std::min( traits::matrix_num_rows(a),
                 traits::matrix_num_columns(a) );
@@ -229,14 +227,14 @@
                 jobz ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 minmn ) );
-        compute( jobz, a, s, u, vt, info, workspace( tmp_work, tmp_rwork,
+        invoke( jobz, a, s, u, vt, info, workspace( tmp_work, tmp_rwork,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorS, typename MatrixU,
             typename MatrixVT >
-    static void compute( char const jobz, MatrixA& a, VectorS& s, MatrixU& u,
+    static void invoke( char const jobz, MatrixA& a, VectorS& s, MatrixU& u,
             MatrixVT& vt, integer_t& info, optimal_workspace work ) {
         integer_t minmn = std::min( traits::matrix_num_rows(a),
                 traits::matrix_num_columns(a) );
@@ -254,7 +252,7 @@
                 traits::vector_storage(tmp_iwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobz, a, s, u, vt, info, workspace( tmp_work, tmp_rwork,
+        invoke( jobz, a, s, u, vt, info, workspace( tmp_work, tmp_rwork,
                 tmp_iwork ) );
     }
 
@@ -284,7 +282,7 @@
         MatrixU& u, MatrixVT& vt, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gesdd_impl< value_type >::compute( jobz, a, s, u, vt, info, work );
+    gesdd_impl< value_type >::invoke( jobz, a, s, u, vt, info, work );
     return info;
 }
 
@@ -295,7 +293,7 @@
         MatrixU& u, MatrixVT& vt ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gesdd_impl< value_type >::compute( jobz, a, s, u, vt, info,
+    gesdd_impl< value_type >::invoke( jobz, a, s, u, vt, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GESV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -62,12 +60,17 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
+
+    // uniform high-level dispatching-function
+    template< typename MatrixA, typename MatrixB, typename VectorP >
+    static void solve( MatrixA& A, MatrixB& B, VectorP& pivot,
+            integer_t& info ) {
+        invoke( A, pivot, B, info );
+    }
 
     // templated specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -94,7 +97,7 @@
 inline integer_t gesv( MatrixA& a, VectorIPIV& ipiv, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gesv_impl< value_type >::compute( a, ipiv, b, info );
+    gesv_impl< value_type >::invoke( a, ipiv, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GESVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -84,12 +82,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorS, typename MatrixU,
             typename MatrixVT, typename WORK >
-    static void compute( char const jobu, char const jobvt, MatrixA& a,
+    static void invoke( char const jobu, char const jobvt, MatrixA& a,
             VectorS& s, MatrixU& u, MatrixVT& vt, integer_t& info,
             detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -127,18 +125,18 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorS, typename MatrixU,
             typename MatrixVT >
-    static void compute( char const jobu, char const jobvt, MatrixA& a,
+    static void invoke( char const jobu, char const jobvt, MatrixA& a,
             VectorS& s, MatrixU& u, MatrixVT& vt, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_rows(a), traits::matrix_num_columns(a) ) );
-        compute( jobu, jobvt, a, s, u, vt, info, workspace( tmp_work ) );
+        invoke( jobu, jobvt, a, s, u, vt, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorS, typename MatrixU,
             typename MatrixVT >
-    static void compute( char const jobu, char const jobvt, MatrixA& a,
+    static void invoke( char const jobu, char const jobvt, MatrixA& a,
             VectorS& s, MatrixU& u, MatrixVT& vt, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
@@ -150,7 +148,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobu, jobvt, a, s, u, vt, info, workspace( tmp_work ) );
+        invoke( jobu, jobvt, a, s, u, vt, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n ) {
@@ -165,12 +163,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorS, typename MatrixU,
             typename MatrixVT, typename WORK, typename RWORK >
-    static void compute( char const jobu, char const jobvt, MatrixA& a,
+    static void invoke( char const jobu, char const jobvt, MatrixA& a,
             VectorS& s, MatrixU& u, MatrixVT& vt, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -210,7 +208,7 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorS, typename MatrixU,
             typename MatrixVT >
-    static void compute( char const jobu, char const jobvt, MatrixA& a,
+    static void invoke( char const jobu, char const jobvt, MatrixA& a,
             VectorS& s, MatrixU& u, MatrixVT& vt, integer_t& info,
             minimal_workspace work ) {
         integer_t minmn = std::min( traits::matrix_num_rows(a),
@@ -220,14 +218,14 @@
                 minmn ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 minmn ) );
-        compute( jobu, jobvt, a, s, u, vt, info, workspace( tmp_work,
+        invoke( jobu, jobvt, a, s, u, vt, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorS, typename MatrixU,
             typename MatrixVT >
-    static void compute( char const jobu, char const jobvt, MatrixA& a,
+    static void invoke( char const jobu, char const jobvt, MatrixA& a,
             VectorS& s, MatrixU& u, MatrixVT& vt, integer_t& info,
             optimal_workspace work ) {
         integer_t minmn = std::min( traits::matrix_num_rows(a),
@@ -243,7 +241,7 @@
                 &opt_size_work, -1, traits::vector_storage(tmp_rwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobu, jobvt, a, s, u, vt, info, workspace( tmp_work,
+        invoke( jobu, jobvt, a, s, u, vt, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
@@ -265,7 +263,7 @@
         VectorS& s, MatrixU& u, MatrixVT& vt, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gesvd_impl< value_type >::compute( jobu, jobvt, a, s, u, vt, info,
+    gesvd_impl< value_type >::invoke( jobu, jobvt, a, s, u, vt, info,
             work );
     return info;
 }
@@ -277,7 +275,7 @@
         VectorS& s, MatrixU& u, MatrixVT& vt ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gesvd_impl< value_type >::compute( jobu, jobvt, a, s, u, vt, info,
+    gesvd_impl< value_type >::invoke( jobu, jobvt, a, s, u, vt, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gesvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GESVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -93,15 +91,14 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename VectorR, typename VectorC, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename IWORK >
-    static void compute( char const fact, char const trans, MatrixA& a,
+    static void invoke( char const fact, char const trans, MatrixA& a,
             MatrixAF& af, VectorIPIV& ipiv, char& equed, VectorR& r,
             VectorC& c, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
@@ -164,7 +161,7 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename VectorR, typename VectorC, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, char const trans, MatrixA& a,
+    static void invoke( char const fact, char const trans, MatrixA& a,
             MatrixAF& af, VectorIPIV& ipiv, char& equed, VectorR& r,
             VectorC& c, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
@@ -173,7 +170,7 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( fact, trans, a, af, ipiv, equed, r, c, b, x, rcond, ferr,
+        invoke( fact, trans, a, af, ipiv, equed, r, c, b, x, rcond, ferr,
                 berr, info, workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -181,12 +178,12 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename VectorR, typename VectorC, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, char const trans, MatrixA& a,
+    static void invoke( char const fact, char const trans, MatrixA& a,
             MatrixAF& af, VectorIPIV& ipiv, char& equed, VectorR& r,
             VectorC& c, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( fact, trans, a, af, ipiv, equed, r, c, b, x, rcond, ferr,
+        invoke( fact, trans, a, af, ipiv, equed, r, c, b, x, rcond, ferr,
                 berr, info, minimal_workspace() );
     }
 
@@ -205,15 +202,14 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename VectorR, typename VectorC, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename RWORK >
-    static void compute( char const fact, char const trans, MatrixA& a,
+    static void invoke( char const fact, char const trans, MatrixA& a,
             MatrixAF& af, VectorIPIV& ipiv, char& equed, VectorR& r,
             VectorC& c, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
@@ -273,7 +269,7 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename VectorR, typename VectorC, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, char const trans, MatrixA& a,
+    static void invoke( char const fact, char const trans, MatrixA& a,
             MatrixAF& af, VectorIPIV& ipiv, char& equed, VectorR& r,
             VectorC& c, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
@@ -282,7 +278,7 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( fact, trans, a, af, ipiv, equed, r, c, b, x, rcond, ferr,
+        invoke( fact, trans, a, af, ipiv, equed, r, c, b, x, rcond, ferr,
                 berr, info, workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -290,12 +286,12 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename VectorR, typename VectorC, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, char const trans, MatrixA& a,
+    static void invoke( char const fact, char const trans, MatrixA& a,
             MatrixAF& af, VectorIPIV& ipiv, char& equed, VectorR& r,
             VectorC& c, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( fact, trans, a, af, ipiv, equed, r, c, b, x, rcond, ferr,
+        invoke( fact, trans, a, af, ipiv, equed, r, c, b, x, rcond, ferr,
                 berr, info, minimal_workspace() );
     }
 
@@ -321,8 +317,8 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gesvx_impl< value_type >::compute( fact, trans, a, af, ipiv, equed,
-            r, c, b, x, rcond, ferr, berr, info, work );
+    gesvx_impl< value_type >::invoke( fact, trans, a, af, ipiv, equed, r,
+            c, b, x, rcond, ferr, berr, info, work );
     return info;
 }
 
@@ -336,8 +332,8 @@
         MatrixA >::value_type& rcond, VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gesvx_impl< value_type >::compute( fact, trans, a, af, ipiv, equed,
-            r, c, b, x, rcond, ferr, berr, info, optimal_workspace() );
+    gesvx_impl< value_type >::invoke( fact, trans, a, af, ipiv, equed, r,
+            c, b, x, rcond, ferr, berr, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gges.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gges.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gges.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GGES_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -104,17 +102,16 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixVSL,
             typename MatrixVSR, typename WORK, typename BWORK >
-    static void compute( char const jobvsl, char const jobvsr,
-            char const sort, logical_t* selctg, MatrixA& a, MatrixB& b,
-            integer_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
-            VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr, integer_t& info,
+    static void invoke( char const jobvsl, char const jobvsr, char const sort,
+            logical_t* selctg, MatrixA& a, MatrixB& b, integer_t& sdim,
+            VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
+            MatrixVSL& vsl, MatrixVSR& vsr, integer_t& info,
             detail::workspace2< WORK, BWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -167,16 +164,16 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixVSL,
             typename MatrixVSR >
-    static void compute( char const jobvsl, char const jobvsr,
-            char const sort, logical_t* selctg, MatrixA& a, MatrixB& b,
-            integer_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
-            VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr, integer_t& info,
+    static void invoke( char const jobvsl, char const jobvsr, char const sort,
+            logical_t* selctg, MatrixA& a, MatrixB& b, integer_t& sdim,
+            VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
+            MatrixVSL& vsl, MatrixVSR& vsr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< bool > tmp_bwork( min_size_bwork(
                 traits::matrix_num_columns(a), sort ) );
-        compute( jobvsl, jobvsr, sort, selctg, a, b, sdim, alphar, alphai,
+        invoke( jobvsl, jobvsr, sort, selctg, a, b, sdim, alphar, alphai,
                 beta, vsl, vsr, info, workspace( tmp_work, tmp_bwork ) );
     }
 
@@ -184,10 +181,10 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixVSL,
             typename MatrixVSR >
-    static void compute( char const jobvsl, char const jobvsr,
-            char const sort, logical_t* selctg, MatrixA& a, MatrixB& b,
-            integer_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
-            VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr, integer_t& info,
+    static void invoke( char const jobvsl, char const jobvsr, char const sort,
+            logical_t* selctg, MatrixA& a, MatrixB& b, integer_t& sdim,
+            VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
+            MatrixVSL& vsl, MatrixVSR& vsr, integer_t& info,
             optimal_workspace work ) {
         real_type opt_size_work;
         traits::detail::array< bool > tmp_bwork( min_size_bwork(
@@ -203,7 +200,7 @@
                 &opt_size_work, -1, traits::vector_storage(tmp_bwork), info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobvsl, jobvsr, sort, selctg, a, b, sdim, alphar, alphai,
+        invoke( jobvsl, jobvsr, sort, selctg, a, b, sdim, alphar, alphai,
                 beta, vsl, vsr, info, workspace( tmp_work, tmp_bwork ) );
     }
 
@@ -225,18 +222,17 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVSL, typename MatrixVSR,
             typename WORK, typename RWORK, typename BWORK >
-    static void compute( char const jobvsl, char const jobvsr,
-            char const sort, logical_t* selctg, MatrixA& a, MatrixB& b,
-            integer_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
-            MatrixVSL& vsl, MatrixVSR& vsr, integer_t& info,
-            detail::workspace3< WORK, RWORK, BWORK > work ) {
+    static void invoke( char const jobvsl, char const jobvsr, char const sort,
+            logical_t* selctg, MatrixA& a, MatrixB& b, integer_t& sdim,
+            VectorALPHA& alpha, VectorBETA& beta, MatrixVSL& vsl,
+            MatrixVSR& vsr, integer_t& info, detail::workspace3< WORK, RWORK,
+            BWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
                 MatrixB >::value_type >::value) );
@@ -286,29 +282,27 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVSL, typename MatrixVSR >
-    static void compute( char const jobvsl, char const jobvsr,
-            char const sort, logical_t* selctg, MatrixA& a, MatrixB& b,
-            integer_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
-            MatrixVSL& vsl, MatrixVSR& vsr, integer_t& info,
-            minimal_workspace work ) {
+    static void invoke( char const jobvsl, char const jobvsr, char const sort,
+            logical_t* selctg, MatrixA& a, MatrixB& b, integer_t& sdim,
+            VectorALPHA& alpha, VectorBETA& beta, MatrixVSL& vsl,
+            MatrixVSR& vsr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< bool > tmp_bwork( min_size_bwork(
                 traits::matrix_num_columns(a), sort ) );
-        compute( jobvsl, jobvsr, sort, selctg, a, b, sdim, alpha, beta, vsl,
+        invoke( jobvsl, jobvsr, sort, selctg, a, b, sdim, alpha, beta, vsl,
                 vsr, info, workspace( tmp_work, tmp_rwork, tmp_bwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVSL, typename MatrixVSR >
-    static void compute( char const jobvsl, char const jobvsr,
-            char const sort, logical_t* selctg, MatrixA& a, MatrixB& b,
-            integer_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
-            MatrixVSL& vsl, MatrixVSR& vsr, integer_t& info,
-            optimal_workspace work ) {
+    static void invoke( char const jobvsl, char const jobvsr, char const sort,
+            logical_t* selctg, MatrixA& a, MatrixB& b, integer_t& sdim,
+            VectorALPHA& alpha, VectorBETA& beta, MatrixVSL& vsl,
+            MatrixVSR& vsr, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
@@ -325,7 +319,7 @@
                 traits::vector_storage(tmp_bwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobvsl, jobvsr, sort, selctg, a, b, sdim, alpha, beta, vsl,
+        invoke( jobvsl, jobvsr, sort, selctg, a, b, sdim, alpha, beta, vsl,
                 vsr, info, workspace( tmp_work, tmp_rwork, tmp_bwork ) );
     }
 
@@ -356,8 +350,8 @@
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gges_impl< value_type >::compute( jobvsl, jobvsr, sort, selctg, a,
-            b, sdim, alphar, alphai, beta, vsl, vsr, info, work );
+    gges_impl< value_type >::invoke( jobvsl, jobvsr, sort, selctg, a, b,
+            sdim, alphar, alphai, beta, vsl, vsr, info, work );
     return info;
 }
 
@@ -371,9 +365,8 @@
         VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gges_impl< value_type >::compute( jobvsl, jobvsr, sort, selctg, a,
-            b, sdim, alphar, alphai, beta, vsl, vsr, info,
-            optimal_workspace() );
+    gges_impl< value_type >::invoke( jobvsl, jobvsr, sort, selctg, a, b,
+            sdim, alphar, alphai, beta, vsl, vsr, info, optimal_workspace() );
     return info;
 }
 // template function to call gges
@@ -386,8 +379,8 @@
         MatrixVSR& vsr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gges_impl< value_type >::compute( jobvsl, jobvsr, sort, selctg, a,
-            b, sdim, alpha, beta, vsl, vsr, info, work );
+    gges_impl< value_type >::invoke( jobvsl, jobvsr, sort, selctg, a, b,
+            sdim, alpha, beta, vsl, vsr, info, work );
     return info;
 }
 
@@ -400,8 +393,8 @@
         MatrixVSR& vsr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gges_impl< value_type >::compute( jobvsl, jobvsr, sort, selctg, a,
-            b, sdim, alpha, beta, vsl, vsr, info, optimal_workspace() );
+    gges_impl< value_type >::invoke( jobvsl, jobvsr, sort, selctg, a, b,
+            sdim, alpha, beta, vsl, vsr, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggesx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggesx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggesx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GGESX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -110,20 +108,19 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixVSL,
             typename MatrixVSR, typename VectorRCONDE, typename VectorRCONDV,
             typename WORK, typename IWORK, typename BWORK >
-    static void compute( char const jobvsl, char const jobvsr,
-            char const sort, logical_t* selctg, char const sense, MatrixA& a,
-            MatrixB& b, integer_t& sdim, VectorALPHAR& alphar,
-            VectorALPHAI& alphai, VectorBETA& beta, MatrixVSL& vsl,
-            MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv,
-            integer_t& info, detail::workspace3< WORK, IWORK, BWORK > work ) {
+    static void invoke( char const jobvsl, char const jobvsr, char const sort,
+            logical_t* selctg, char const sense, MatrixA& a, MatrixB& b,
+            integer_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
+            VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
+            VectorRCONDE& rconde, VectorRCONDV& rcondv, integer_t& info,
+            detail::workspace3< WORK, IWORK, BWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
                 MatrixB >::value_type >::value) );
@@ -189,19 +186,19 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixVSL,
             typename MatrixVSR, typename VectorRCONDE, typename VectorRCONDV >
-    static void compute( char const jobvsl, char const jobvsr,
-            char const sort, logical_t* selctg, char const sense, MatrixA& a,
-            MatrixB& b, integer_t& sdim, VectorALPHAR& alphar,
-            VectorALPHAI& alphai, VectorBETA& beta, MatrixVSL& vsl,
-            MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv,
-            integer_t& info, minimal_workspace work ) {
+    static void invoke( char const jobvsl, char const jobvsr, char const sort,
+            logical_t* selctg, char const sense, MatrixA& a, MatrixB& b,
+            integer_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
+            VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
+            VectorRCONDE& rconde, VectorRCONDV& rcondv, integer_t& info,
+            minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a), sense ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a), sense ) );
         traits::detail::array< bool > tmp_bwork( min_size_bwork(
                 traits::matrix_num_columns(a), sort ) );
-        compute( jobvsl, jobvsr, sort, selctg, sense, a, b, sdim, alphar,
+        invoke( jobvsl, jobvsr, sort, selctg, sense, a, b, sdim, alphar,
                 alphai, beta, vsl, vsr, rconde, rcondv, info,
                 workspace( tmp_work, tmp_iwork, tmp_bwork ) );
     }
@@ -210,12 +207,12 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixVSL,
             typename MatrixVSR, typename VectorRCONDE, typename VectorRCONDV >
-    static void compute( char const jobvsl, char const jobvsr,
-            char const sort, logical_t* selctg, char const sense, MatrixA& a,
-            MatrixB& b, integer_t& sdim, VectorALPHAR& alphar,
-            VectorALPHAI& alphai, VectorBETA& beta, MatrixVSL& vsl,
-            MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv,
-            integer_t& info, optimal_workspace work ) {
+    static void invoke( char const jobvsl, char const jobvsr, char const sort,
+            logical_t* selctg, char const sense, MatrixA& a, MatrixB& b,
+            integer_t& sdim, VectorALPHAR& alphar, VectorALPHAI& alphai,
+            VectorBETA& beta, MatrixVSL& vsl, MatrixVSR& vsr,
+            VectorRCONDE& rconde, VectorRCONDV& rcondv, integer_t& info,
+            optimal_workspace work ) {
         real_type opt_size_work;
         integer_t opt_size_iwork;
         traits::detail::array< bool > tmp_bwork( min_size_bwork(
@@ -234,7 +231,7 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobvsl, jobvsr, sort, selctg, sense, a, b, sdim, alphar,
+        invoke( jobvsl, jobvsr, sort, selctg, sense, a, b, sdim, alphar,
                 alphai, beta, vsl, vsr, rconde, rcondv, info,
                 workspace( tmp_work, tmp_iwork, tmp_bwork ) );
     }
@@ -269,17 +266,16 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVSL, typename MatrixVSR,
             typename VectorRCONDE, typename VectorRCONDV, typename WORK,
             typename RWORK, typename IWORK, typename BWORK >
-    static void compute( char const jobvsl, char const jobvsr,
-            char const sort, logical_t* selctg, char const sense, MatrixA& a,
-            MatrixB& b, integer_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
+    static void invoke( char const jobvsl, char const jobvsr, char const sort,
+            logical_t* selctg, char const sense, MatrixA& a, MatrixB& b,
+            integer_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
             MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
             VectorRCONDV& rcondv, integer_t& info, detail::workspace4< WORK,
             RWORK, IWORK, BWORK > work ) {
@@ -344,9 +340,9 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVSL, typename MatrixVSR,
             typename VectorRCONDE, typename VectorRCONDV >
-    static void compute( char const jobvsl, char const jobvsr,
-            char const sort, logical_t* selctg, char const sense, MatrixA& a,
-            MatrixB& b, integer_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
+    static void invoke( char const jobvsl, char const jobvsr, char const sort,
+            logical_t* selctg, char const sense, MatrixA& a, MatrixB& b,
+            integer_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
             MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
             VectorRCONDV& rcondv, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
@@ -357,7 +353,7 @@
                 traits::matrix_num_columns(a), sense ) );
         traits::detail::array< bool > tmp_bwork( min_size_bwork(
                 traits::matrix_num_columns(a), sort ) );
-        compute( jobvsl, jobvsr, sort, selctg, sense, a, b, sdim, alpha, beta,
+        invoke( jobvsl, jobvsr, sort, selctg, sense, a, b, sdim, alpha, beta,
                 vsl, vsr, rconde, rcondv, info, workspace( tmp_work,
                 tmp_rwork, tmp_iwork, tmp_bwork ) );
     }
@@ -366,9 +362,9 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVSL, typename MatrixVSR,
             typename VectorRCONDE, typename VectorRCONDV >
-    static void compute( char const jobvsl, char const jobvsr,
-            char const sort, logical_t* selctg, char const sense, MatrixA& a,
-            MatrixB& b, integer_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
+    static void invoke( char const jobvsl, char const jobvsr, char const sort,
+            logical_t* selctg, char const sense, MatrixA& a, MatrixB& b,
+            integer_t& sdim, VectorALPHA& alpha, VectorBETA& beta,
             MatrixVSL& vsl, MatrixVSR& vsr, VectorRCONDE& rconde,
             VectorRCONDV& rcondv, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
@@ -391,7 +387,7 @@
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobvsl, jobvsr, sort, selctg, sense, a, b, sdim, alpha, beta,
+        invoke( jobvsl, jobvsr, sort, selctg, sense, a, b, sdim, alpha, beta,
                 vsl, vsr, rconde, rcondv, info, workspace( tmp_work,
                 tmp_rwork, tmp_iwork, tmp_bwork ) );
     }
@@ -436,7 +432,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggesx_impl< value_type >::compute( jobvsl, jobvsr, sort, selctg,
+    ggesx_impl< value_type >::invoke( jobvsl, jobvsr, sort, selctg,
             sense, a, b, sdim, alphar, alphai, beta, vsl, vsr, rconde, rcondv,
             info, work );
     return info;
@@ -453,7 +449,7 @@
         MatrixVSR& vsr, VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggesx_impl< value_type >::compute( jobvsl, jobvsr, sort, selctg,
+    ggesx_impl< value_type >::invoke( jobvsl, jobvsr, sort, selctg,
             sense, a, b, sdim, alphar, alphai, beta, vsl, vsr, rconde, rcondv,
             info, optimal_workspace() );
     return info;
@@ -469,7 +465,7 @@
         VectorRCONDV& rcondv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggesx_impl< value_type >::compute( jobvsl, jobvsr, sort, selctg,
+    ggesx_impl< value_type >::invoke( jobvsl, jobvsr, sort, selctg,
             sense, a, b, sdim, alpha, beta, vsl, vsr, rconde, rcondv, info,
             work );
     return info;
@@ -486,7 +482,7 @@
         VectorRCONDV& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggesx_impl< value_type >::compute( jobvsl, jobvsr, sort, selctg,
+    ggesx_impl< value_type >::invoke( jobvsl, jobvsr, sort, selctg,
             sense, a, b, sdim, alpha, beta, vsl, vsr, rconde, rcondv, info,
             optimal_workspace() );
     return info;
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggev.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggev.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GGEV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -92,14 +90,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixVL,
             typename MatrixVR, typename WORK >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             MatrixB& b, VectorALPHAR& alphar, VectorALPHAI& alphai,
             VectorBETA& beta, MatrixVL& vl, MatrixVR& vr, integer_t& info,
             detail::workspace1< WORK > work ) {
@@ -149,13 +146,13 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixVL,
             typename MatrixVR >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             MatrixB& b, VectorALPHAR& alphar, VectorALPHAI& alphai,
             VectorBETA& beta, MatrixVL& vl, MatrixVR& vr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
-        compute( jobvl, jobvr, a, b, alphar, alphai, beta, vl, vr, info,
+        invoke( jobvl, jobvr, a, b, alphar, alphai, beta, vl, vr, info,
                 workspace( tmp_work ) );
     }
 
@@ -163,7 +160,7 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixVL,
             typename MatrixVR >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             MatrixB& b, VectorALPHAR& alphar, VectorALPHAI& alphai,
             VectorBETA& beta, MatrixVL& vl, MatrixVR& vr, integer_t& info,
             optimal_workspace work ) {
@@ -178,7 +175,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobvl, jobvr, a, b, alphar, alphai, beta, vl, vr, info,
+        invoke( jobvl, jobvr, a, b, alphar, alphai, beta, vl, vr, info,
                 workspace( tmp_work ) );
     }
 
@@ -193,14 +190,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVL, typename MatrixVR,
             typename WORK, typename RWORK >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             MatrixB& b, VectorALPHA& alpha, VectorBETA& beta, MatrixVL& vl,
             MatrixVR& vr, integer_t& info, detail::workspace2< WORK,
             RWORK > work ) {
@@ -248,21 +244,21 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVL, typename MatrixVR >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             MatrixB& b, VectorALPHA& alpha, VectorBETA& beta, MatrixVL& vl,
             MatrixVR& vr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( jobvl, jobvr, a, b, alpha, beta, vl, vr, info,
+        invoke( jobvl, jobvr, a, b, alpha, beta, vl, vr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVL, typename MatrixVR >
-    static void compute( char const jobvl, char const jobvr, MatrixA& a,
+    static void invoke( char const jobvl, char const jobvr, MatrixA& a,
             MatrixB& b, VectorALPHA& alpha, VectorBETA& beta, MatrixVL& vl,
             MatrixVR& vr, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
@@ -277,7 +273,7 @@
                 &opt_size_work, -1, traits::vector_storage(tmp_rwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobvl, jobvr, a, b, alpha, beta, vl, vr, info,
+        invoke( jobvl, jobvr, a, b, alpha, beta, vl, vr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -300,8 +296,8 @@
         VectorBETA& beta, MatrixVL& vl, MatrixVR& vr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggev_impl< value_type >::compute( jobvl, jobvr, a, b, alphar,
-            alphai, beta, vl, vr, info, work );
+    ggev_impl< value_type >::invoke( jobvl, jobvr, a, b, alphar, alphai,
+            beta, vl, vr, info, work );
     return info;
 }
 
@@ -314,8 +310,8 @@
         VectorBETA& beta, MatrixVL& vl, MatrixVR& vr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggev_impl< value_type >::compute( jobvl, jobvr, a, b, alphar,
-            alphai, beta, vl, vr, info, optimal_workspace() );
+    ggev_impl< value_type >::invoke( jobvl, jobvr, a, b, alphar, alphai,
+            beta, vl, vr, info, optimal_workspace() );
     return info;
 }
 // template function to call ggev
@@ -327,7 +323,7 @@
         MatrixVR& vr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggev_impl< value_type >::compute( jobvl, jobvr, a, b, alpha, beta,
+    ggev_impl< value_type >::invoke( jobvl, jobvr, a, b, alpha, beta,
             vl, vr, info, work );
     return info;
 }
@@ -340,7 +336,7 @@
         MatrixVR& vr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggev_impl< value_type >::compute( jobvl, jobvr, a, b, alpha, beta,
+    ggev_impl< value_type >::invoke( jobvl, jobvr, a, b, alpha, beta,
             vl, vr, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggevx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GGEVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -113,19 +111,18 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHAR,
             typename VectorALPHAI, typename VectorBETA, typename MatrixVL,
             typename MatrixVR, typename VectorLSCALE, typename VectorRSCALE,
             typename VectorRCONDE, typename VectorRCONDV, typename WORK,
             typename IWORK, typename BWORK >
-    static void compute( char const balanc, char const jobvl,
-            char const jobvr, char const sense, MatrixA& a, MatrixB& b,
-            VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
-            MatrixVL& vl, MatrixVR& vr, integer_t& ilo, integer_t& ihi,
+    static void invoke( char const balanc, char const jobvl, char const jobvr,
+            char const sense, MatrixA& a, MatrixB& b, VectorALPHAR& alphar,
+            VectorALPHAI& alphai, VectorBETA& beta, MatrixVL& vl,
+            MatrixVR& vr, integer_t& ilo, integer_t& ihi,
             VectorLSCALE& lscale, VectorRSCALE& rscale, real_type& abnrm,
             real_type& bbnrm, VectorRCONDE& rconde, VectorRCONDV& rcondv,
             integer_t& info, detail::workspace3< WORK, IWORK, BWORK > work ) {
@@ -203,10 +200,10 @@
             typename VectorALPHAI, typename VectorBETA, typename MatrixVL,
             typename MatrixVR, typename VectorLSCALE, typename VectorRSCALE,
             typename VectorRCONDE, typename VectorRCONDV >
-    static void compute( char const balanc, char const jobvl,
-            char const jobvr, char const sense, MatrixA& a, MatrixB& b,
-            VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
-            MatrixVL& vl, MatrixVR& vr, integer_t& ilo, integer_t& ihi,
+    static void invoke( char const balanc, char const jobvl, char const jobvr,
+            char const sense, MatrixA& a, MatrixB& b, VectorALPHAR& alphar,
+            VectorALPHAI& alphai, VectorBETA& beta, MatrixVL& vl,
+            MatrixVR& vr, integer_t& ilo, integer_t& ihi,
             VectorLSCALE& lscale, VectorRSCALE& rscale, real_type& abnrm,
             real_type& bbnrm, VectorRCONDE& rconde, VectorRCONDV& rcondv,
             integer_t& info, minimal_workspace work ) {
@@ -216,7 +213,7 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< bool > tmp_bwork( min_size_bwork( sense,
                 traits::matrix_num_columns(a) ) );
-        compute( balanc, jobvl, jobvr, sense, a, b, alphar, alphai, beta, vl,
+        invoke( balanc, jobvl, jobvr, sense, a, b, alphar, alphai, beta, vl,
                 vr, ilo, ihi, lscale, rscale, abnrm, bbnrm, rconde, rcondv,
                 info, workspace( tmp_work, tmp_iwork, tmp_bwork ) );
     }
@@ -226,10 +223,10 @@
             typename VectorALPHAI, typename VectorBETA, typename MatrixVL,
             typename MatrixVR, typename VectorLSCALE, typename VectorRSCALE,
             typename VectorRCONDE, typename VectorRCONDV >
-    static void compute( char const balanc, char const jobvl,
-            char const jobvr, char const sense, MatrixA& a, MatrixB& b,
-            VectorALPHAR& alphar, VectorALPHAI& alphai, VectorBETA& beta,
-            MatrixVL& vl, MatrixVR& vr, integer_t& ilo, integer_t& ihi,
+    static void invoke( char const balanc, char const jobvl, char const jobvr,
+            char const sense, MatrixA& a, MatrixB& b, VectorALPHAR& alphar,
+            VectorALPHAI& alphai, VectorBETA& beta, MatrixVL& vl,
+            MatrixVR& vr, integer_t& ilo, integer_t& ihi,
             VectorLSCALE& lscale, VectorRSCALE& rscale, real_type& abnrm,
             real_type& bbnrm, VectorRCONDE& rconde, VectorRCONDV& rcondv,
             integer_t& info, optimal_workspace work ) {
@@ -253,7 +250,7 @@
                 traits::vector_storage(tmp_bwork), info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( balanc, jobvl, jobvr, sense, a, b, alphar, alphai, beta, vl,
+        invoke( balanc, jobvl, jobvr, sense, a, b, alphar, alphai, beta, vl,
                 vr, ilo, ihi, lscale, rscale, abnrm, bbnrm, rconde, rcondv,
                 info, workspace( tmp_work, tmp_iwork, tmp_bwork ) );
     }
@@ -290,22 +287,21 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixVL, typename MatrixVR,
             typename VectorLSCALE, typename VectorRSCALE,
             typename VectorRCONDE, typename VectorRCONDV, typename WORK,
             typename RWORK, typename IWORK, typename BWORK >
-    static void compute( char const balanc, char const jobvl,
-            char const jobvr, char const sense, MatrixA& a, MatrixB& b,
-            VectorALPHA& alpha, VectorBETA& beta, MatrixVL& vl, MatrixVR& vr,
-            integer_t& ilo, integer_t& ihi, VectorLSCALE& lscale,
-            VectorRSCALE& rscale, real_type& abnrm, real_type& bbnrm,
-            VectorRCONDE& rconde, VectorRCONDV& rcondv, integer_t& info,
-            detail::workspace4< WORK, RWORK, IWORK, BWORK > work ) {
+    static void invoke( char const balanc, char const jobvl, char const jobvr,
+            char const sense, MatrixA& a, MatrixB& b, VectorALPHA& alpha,
+            VectorBETA& beta, MatrixVL& vl, MatrixVR& vr, integer_t& ilo,
+            integer_t& ihi, VectorLSCALE& lscale, VectorRSCALE& rscale,
+            real_type& abnrm, real_type& bbnrm, VectorRCONDE& rconde,
+            VectorRCONDV& rcondv, integer_t& info, detail::workspace4< WORK,
+            RWORK, IWORK, BWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorLSCALE >::value_type, typename traits::vector_traits<
                 VectorRSCALE >::value_type >::value) );
@@ -376,13 +372,12 @@
             typename VectorBETA, typename MatrixVL, typename MatrixVR,
             typename VectorLSCALE, typename VectorRSCALE,
             typename VectorRCONDE, typename VectorRCONDV >
-    static void compute( char const balanc, char const jobvl,
-            char const jobvr, char const sense, MatrixA& a, MatrixB& b,
-            VectorALPHA& alpha, VectorBETA& beta, MatrixVL& vl, MatrixVR& vr,
-            integer_t& ilo, integer_t& ihi, VectorLSCALE& lscale,
-            VectorRSCALE& rscale, real_type& abnrm, real_type& bbnrm,
-            VectorRCONDE& rconde, VectorRCONDV& rcondv, integer_t& info,
-            minimal_workspace work ) {
+    static void invoke( char const balanc, char const jobvl, char const jobvr,
+            char const sense, MatrixA& a, MatrixB& b, VectorALPHA& alpha,
+            VectorBETA& beta, MatrixVL& vl, MatrixVR& vr, integer_t& ilo,
+            integer_t& ihi, VectorLSCALE& lscale, VectorRSCALE& rscale,
+            real_type& abnrm, real_type& bbnrm, VectorRCONDE& rconde,
+            VectorRCONDV& rcondv, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( sense,
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( balanc,
@@ -391,7 +386,7 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< bool > tmp_bwork( min_size_bwork( sense,
                 traits::matrix_num_columns(a) ) );
-        compute( balanc, jobvl, jobvr, sense, a, b, alpha, beta, vl, vr, ilo,
+        invoke( balanc, jobvl, jobvr, sense, a, b, alpha, beta, vl, vr, ilo,
                 ihi, lscale, rscale, abnrm, bbnrm, rconde, rcondv, info,
                 workspace( tmp_work, tmp_rwork, tmp_iwork, tmp_bwork ) );
     }
@@ -401,13 +396,12 @@
             typename VectorBETA, typename MatrixVL, typename MatrixVR,
             typename VectorLSCALE, typename VectorRSCALE,
             typename VectorRCONDE, typename VectorRCONDV >
-    static void compute( char const balanc, char const jobvl,
-            char const jobvr, char const sense, MatrixA& a, MatrixB& b,
-            VectorALPHA& alpha, VectorBETA& beta, MatrixVL& vl, MatrixVR& vr,
-            integer_t& ilo, integer_t& ihi, VectorLSCALE& lscale,
-            VectorRSCALE& rscale, real_type& abnrm, real_type& bbnrm,
-            VectorRCONDE& rconde, VectorRCONDV& rcondv, integer_t& info,
-            optimal_workspace work ) {
+    static void invoke( char const balanc, char const jobvl, char const jobvr,
+            char const sense, MatrixA& a, MatrixB& b, VectorALPHA& alpha,
+            VectorBETA& beta, MatrixVL& vl, MatrixVR& vr, integer_t& ilo,
+            integer_t& ihi, VectorLSCALE& lscale, VectorRSCALE& rscale,
+            real_type& abnrm, real_type& bbnrm, VectorRCONDE& rconde,
+            VectorRCONDV& rcondv, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( balanc,
                 traits::matrix_num_columns(a) ) );
@@ -431,7 +425,7 @@
                 traits::vector_storage(tmp_bwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( balanc, jobvl, jobvr, sense, a, b, alpha, beta, vl, vr, ilo,
+        invoke( balanc, jobvl, jobvr, sense, a, b, alpha, beta, vl, vr, ilo,
                 ihi, lscale, rscale, abnrm, bbnrm, rconde, rcondv, info,
                 workspace( tmp_work, tmp_rwork, tmp_iwork, tmp_bwork ) );
     }
@@ -485,7 +479,7 @@
         VectorRCONDE& rconde, VectorRCONDV& rcondv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggevx_impl< value_type >::compute( balanc, jobvl, jobvr, sense, a, b,
+    ggevx_impl< value_type >::invoke( balanc, jobvl, jobvr, sense, a, b,
             alphar, alphai, beta, vl, vr, ilo, ihi, lscale, rscale, abnrm,
             bbnrm, rconde, rcondv, info, work );
     return info;
@@ -506,7 +500,7 @@
         VectorRCONDE& rconde, VectorRCONDV& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggevx_impl< value_type >::compute( balanc, jobvl, jobvr, sense, a, b,
+    ggevx_impl< value_type >::invoke( balanc, jobvl, jobvr, sense, a, b,
             alphar, alphai, beta, vl, vr, ilo, ihi, lscale, rscale, abnrm,
             bbnrm, rconde, rcondv, info, optimal_workspace() );
     return info;
@@ -526,7 +520,7 @@
         VectorRCONDV& rcondv, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggevx_impl< value_type >::compute( balanc, jobvl, jobvr, sense, a, b,
+    ggevx_impl< value_type >::invoke( balanc, jobvl, jobvr, sense, a, b,
             alpha, beta, vl, vr, ilo, ihi, lscale, rscale, abnrm, bbnrm,
             rconde, rcondv, info, work );
     return info;
@@ -547,7 +541,7 @@
         VectorRCONDV& rcondv ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggevx_impl< value_type >::compute( balanc, jobvl, jobvr, sense, a, b,
+    ggevx_impl< value_type >::invoke( balanc, jobvl, jobvr, sense, a, b,
             alpha, beta, vl, vr, ilo, ihi, lscale, rscale, abnrm, bbnrm,
             rconde, rcondv, info, optimal_workspace() );
     return info;
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggglm.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggglm.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggglm.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GGGLM_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -84,13 +82,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorD,
             typename VectorX, typename VectorY, typename WORK >
-    static void compute( MatrixA& a, MatrixB& b, VectorD& d, VectorX& x,
+    static void invoke( MatrixA& a, MatrixB& b, VectorD& d, VectorX& x,
             VectorY& y, integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -132,18 +129,18 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorD,
             typename VectorX, typename VectorY >
-    static void compute( MatrixA& a, MatrixB& b, VectorD& d, VectorX& x,
+    static void invoke( MatrixA& a, MatrixB& b, VectorD& d, VectorX& x,
             VectorY& y, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a), traits::matrix_num_rows(b),
                 traits::matrix_num_columns(b) ) );
-        compute( a, b, d, x, y, info, workspace( tmp_work ) );
+        invoke( a, b, d, x, y, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorD,
             typename VectorX, typename VectorY >
-    static void compute( MatrixA& a, MatrixB& b, VectorD& d, VectorX& x,
+    static void invoke( MatrixA& a, MatrixB& b, VectorD& d, VectorX& x,
             VectorY& y, integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         detail::ggglm( traits::matrix_num_rows(b),
@@ -154,7 +151,7 @@
                 traits::vector_storage(y), &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, b, d, x, y, info, workspace( tmp_work ) );
+        invoke( a, b, d, x, y, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n,
@@ -169,13 +166,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorD,
             typename VectorX, typename VectorY, typename WORK >
-    static void compute( MatrixA& a, MatrixB& b, VectorD& d, VectorX& x,
+    static void invoke( MatrixA& a, MatrixB& b, VectorD& d, VectorX& x,
             VectorY& y, integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -217,18 +213,18 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorD,
             typename VectorX, typename VectorY >
-    static void compute( MatrixA& a, MatrixB& b, VectorD& d, VectorX& x,
+    static void invoke( MatrixA& a, MatrixB& b, VectorD& d, VectorX& x,
             VectorY& y, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a), traits::matrix_num_rows(b),
                 traits::matrix_num_columns(b) ) );
-        compute( a, b, d, x, y, info, workspace( tmp_work ) );
+        invoke( a, b, d, x, y, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorD,
             typename VectorX, typename VectorY >
-    static void compute( MatrixA& a, MatrixB& b, VectorD& d, VectorX& x,
+    static void invoke( MatrixA& a, MatrixB& b, VectorD& d, VectorX& x,
             VectorY& y, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         detail::ggglm( traits::matrix_num_rows(b),
@@ -239,7 +235,7 @@
                 traits::vector_storage(y), &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, b, d, x, y, info, workspace( tmp_work ) );
+        invoke( a, b, d, x, y, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n,
@@ -256,7 +252,7 @@
         VectorY& y, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggglm_impl< value_type >::compute( a, b, d, x, y, info, work );
+    ggglm_impl< value_type >::invoke( a, b, d, x, y, info, work );
     return info;
 }
 
@@ -267,7 +263,7 @@
         VectorY& y ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggglm_impl< value_type >::compute( a, b, d, x, y, info,
+    ggglm_impl< value_type >::invoke( a, b, d, x, y, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gglse.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gglse.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gglse.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GGLSE_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -84,13 +82,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorC,
             typename VectorD, typename VectorX, typename WORK >
-    static void compute( MatrixA& a, MatrixB& b, VectorC& c, VectorD& d,
+    static void invoke( MatrixA& a, MatrixB& b, VectorC& c, VectorD& d,
             VectorX& x, integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -130,18 +127,18 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorC,
             typename VectorD, typename VectorX >
-    static void compute( MatrixA& a, MatrixB& b, VectorC& c, VectorD& d,
+    static void invoke( MatrixA& a, MatrixB& b, VectorC& c, VectorD& d,
             VectorX& x, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_rows(a), traits::matrix_num_columns(b),
                 traits::matrix_num_rows(b) ) );
-        compute( a, b, c, d, x, info, workspace( tmp_work ) );
+        invoke( a, b, c, d, x, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorC,
             typename VectorD, typename VectorX >
-    static void compute( MatrixA& a, MatrixB& b, VectorC& c, VectorD& d,
+    static void invoke( MatrixA& a, MatrixB& b, VectorC& c, VectorD& d,
             VectorX& x, integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         detail::gglse( traits::matrix_num_rows(a),
@@ -152,7 +149,7 @@
                 traits::vector_storage(x), &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, b, c, d, x, info, workspace( tmp_work ) );
+        invoke( a, b, c, d, x, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n,
@@ -167,13 +164,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorC,
             typename VectorD, typename VectorX, typename WORK >
-    static void compute( MatrixA& a, MatrixB& b, VectorC& c, VectorD& d,
+    static void invoke( MatrixA& a, MatrixB& b, VectorC& c, VectorD& d,
             VectorX& x, integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -213,18 +209,18 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorC,
             typename VectorD, typename VectorX >
-    static void compute( MatrixA& a, MatrixB& b, VectorC& c, VectorD& d,
+    static void invoke( MatrixA& a, MatrixB& b, VectorC& c, VectorD& d,
             VectorX& x, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_rows(a), traits::matrix_num_columns(b),
                 traits::matrix_num_rows(b) ) );
-        compute( a, b, c, d, x, info, workspace( tmp_work ) );
+        invoke( a, b, c, d, x, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorC,
             typename VectorD, typename VectorX >
-    static void compute( MatrixA& a, MatrixB& b, VectorC& c, VectorD& d,
+    static void invoke( MatrixA& a, MatrixB& b, VectorC& c, VectorD& d,
             VectorX& x, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         detail::gglse( traits::matrix_num_rows(a),
@@ -235,7 +231,7 @@
                 traits::vector_storage(x), &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, b, c, d, x, info, workspace( tmp_work ) );
+        invoke( a, b, c, d, x, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const m, integer_t const n,
@@ -252,7 +248,7 @@
         VectorX& x, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gglse_impl< value_type >::compute( a, b, c, d, x, info, work );
+    gglse_impl< value_type >::invoke( a, b, c, d, x, info, work );
     return info;
 }
 
@@ -263,7 +259,7 @@
         VectorX& x ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    gglse_impl< value_type >::compute( a, b, c, d, x, info,
+    gglse_impl< value_type >::invoke( a, b, c, d, x, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggsvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggsvd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ggsvd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GGSVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -101,14 +99,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixU, typename MatrixV,
             typename MatrixQ, typename WORK, typename IWORK >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             integer_t& k, integer_t& l, MatrixA& a, MatrixB& b,
             VectorALPHA& alpha, VectorBETA& beta, MatrixU& u, MatrixV& v,
             MatrixQ& q, integer_t& info, detail::workspace2< WORK,
@@ -164,7 +161,7 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixU, typename MatrixV,
             typename MatrixQ >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             integer_t& k, integer_t& l, MatrixA& a, MatrixB& b,
             VectorALPHA& alpha, VectorBETA& beta, MatrixU& u, MatrixV& v,
             MatrixQ& q, integer_t& info, minimal_workspace work ) {
@@ -173,7 +170,7 @@
                 traits::matrix_num_rows(b) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(b) ) );
-        compute( jobu, jobv, jobq, k, l, a, b, alpha, beta, u, v, q, info,
+        invoke( jobu, jobv, jobq, k, l, a, b, alpha, beta, u, v, q, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -181,11 +178,11 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixU, typename MatrixV,
             typename MatrixQ >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             integer_t& k, integer_t& l, MatrixA& a, MatrixB& b,
             VectorALPHA& alpha, VectorBETA& beta, MatrixU& u, MatrixV& v,
             MatrixQ& q, integer_t& info, optimal_workspace work ) {
-        compute( jobu, jobv, jobq, k, l, a, b, alpha, beta, u, v, q, info,
+        invoke( jobu, jobv, jobq, k, l, a, b, alpha, beta, u, v, q, info,
                 minimal_workspace() );
     }
 
@@ -205,14 +202,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixU, typename MatrixV,
             typename MatrixQ, typename WORK, typename RWORK, typename IWORK >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             integer_t& k, integer_t& l, MatrixA& a, MatrixB& b,
             VectorALPHA& alpha, VectorBETA& beta, MatrixU& u, MatrixV& v,
             MatrixQ& q, integer_t& info, detail::workspace3< WORK, RWORK,
@@ -268,7 +264,7 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixU, typename MatrixV,
             typename MatrixQ >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             integer_t& k, integer_t& l, MatrixA& a, MatrixB& b,
             VectorALPHA& alpha, VectorBETA& beta, MatrixU& u, MatrixV& v,
             MatrixQ& q, integer_t& info, minimal_workspace work ) {
@@ -279,7 +275,7 @@
                 traits::matrix_num_columns(b) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(b) ) );
-        compute( jobu, jobv, jobq, k, l, a, b, alpha, beta, u, v, q, info,
+        invoke( jobu, jobv, jobq, k, l, a, b, alpha, beta, u, v, q, info,
                 workspace( tmp_work, tmp_rwork, tmp_iwork ) );
     }
 
@@ -287,11 +283,11 @@
     template< typename MatrixA, typename MatrixB, typename VectorALPHA,
             typename VectorBETA, typename MatrixU, typename MatrixV,
             typename MatrixQ >
-    static void compute( char const jobu, char const jobv, char const jobq,
+    static void invoke( char const jobu, char const jobv, char const jobq,
             integer_t& k, integer_t& l, MatrixA& a, MatrixB& b,
             VectorALPHA& alpha, VectorBETA& beta, MatrixU& u, MatrixV& v,
             MatrixQ& q, integer_t& info, optimal_workspace work ) {
-        compute( jobu, jobv, jobq, k, l, a, b, alpha, beta, u, v, q, info,
+        invoke( jobu, jobv, jobq, k, l, a, b, alpha, beta, u, v, q, info,
                 minimal_workspace() );
     }
 
@@ -320,7 +316,7 @@
         MatrixQ& q, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggsvd_impl< value_type >::compute( jobu, jobv, jobq, k, l, a, b,
+    ggsvd_impl< value_type >::invoke( jobu, jobv, jobq, k, l, a, b,
             alpha, beta, u, v, q, info, work );
     return info;
 }
@@ -335,7 +331,7 @@
         MatrixQ& q ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    ggsvd_impl< value_type >::compute( jobu, jobv, jobq, k, l, a, b,
+    ggsvd_impl< value_type >::invoke( jobu, jobv, jobq, k, l, a, b,
             alpha, beta, u, v, q, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GTSV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -66,12 +64,18 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::B > valid_keywords;
+
+    // uniform high-level dispatching-function
+    template< typename MatrixA, typename MatrixB, typename VectorP >
+    static void solve( MatrixA& A, MatrixB& B, VectorP& pivot,
+            integer_t& info ) {
+        invoke( B, info );
+    }
 
     // templated specialization
     template< typename VectorDL, typename VectorD, typename VectorDU,
             typename MatrixB >
-    static void compute( integer_t const n, VectorDL& dl, VectorD& d,
+    static void invoke( integer_t const n, VectorDL& dl, VectorD& d,
             VectorDU& du, MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorDL >::value_type, typename traits::vector_traits<
@@ -103,7 +107,7 @@
         VectorDU& du, MatrixB& b ) {
     typedef typename traits::vector_traits< VectorDL >::value_type value_type;
     integer_t info(0);
-    gtsv_impl< value_type >::compute( n, dl, d, du, b, info );
+    gtsv_impl< value_type >::invoke( n, dl, d, du, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/gtsvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_GTSVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -99,16 +97,15 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorDL, typename VectorD, typename VectorDU,
             typename VectorDLF, typename VectorDF, typename VectorDUF,
             typename VectorDU2, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename IWORK >
-    static void compute( char const fact, char const trans, integer_t const n,
+    static void invoke( char const fact, char const trans, integer_t const n,
             VectorDL& dl, VectorD& d, VectorDU& du, VectorDLF& dlf,
             VectorDF& df, VectorDUF& duf, VectorDU2& du2, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, real_type& rcond, VectorFERR& ferr,
@@ -177,14 +174,14 @@
             typename VectorDLF, typename VectorDF, typename VectorDUF,
             typename VectorDU2, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, char const trans, integer_t const n,
+    static void invoke( char const fact, char const trans, integer_t const n,
             VectorDL& dl, VectorD& d, VectorDU& du, VectorDLF& dlf,
             VectorDF& df, VectorDUF& duf, VectorDU2& du2, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, real_type& rcond, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( fact, trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x,
+        invoke( fact, trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x,
                 rcond, ferr, berr, info, workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -193,12 +190,12 @@
             typename VectorDLF, typename VectorDF, typename VectorDUF,
             typename VectorDU2, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, char const trans, integer_t const n,
+    static void invoke( char const fact, char const trans, integer_t const n,
             VectorDL& dl, VectorD& d, VectorDU& du, VectorDLF& dlf,
             VectorDF& df, VectorDUF& duf, VectorDU2& du2, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, real_type& rcond, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, optimal_workspace work ) {
-        compute( fact, trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x,
+        invoke( fact, trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x,
                 rcond, ferr, berr, info, minimal_workspace() );
     }
 
@@ -217,16 +214,15 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorDL, typename VectorD, typename VectorDU,
             typename VectorDLF, typename VectorDF, typename VectorDUF,
             typename VectorDU2, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR,
             typename WORK, typename RWORK >
-    static void compute( char const fact, char const trans, integer_t const n,
+    static void invoke( char const fact, char const trans, integer_t const n,
             VectorDL& dl, VectorD& d, VectorDU& du, VectorDLF& dlf,
             VectorDF& df, VectorDUF& duf, VectorDU2& du2, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, real_type& rcond, VectorFERR& ferr,
@@ -292,14 +288,14 @@
             typename VectorDLF, typename VectorDF, typename VectorDUF,
             typename VectorDU2, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, char const trans, integer_t const n,
+    static void invoke( char const fact, char const trans, integer_t const n,
             VectorDL& dl, VectorD& d, VectorDU& du, VectorDLF& dlf,
             VectorDF& df, VectorDUF& duf, VectorDU2& du2, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, real_type& rcond, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( fact, trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x,
+        invoke( fact, trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x,
                 rcond, ferr, berr, info, workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -308,12 +304,12 @@
             typename VectorDLF, typename VectorDF, typename VectorDUF,
             typename VectorDU2, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, char const trans, integer_t const n,
+    static void invoke( char const fact, char const trans, integer_t const n,
             VectorDL& dl, VectorD& d, VectorDU& du, VectorDLF& dlf,
             VectorDF& df, VectorDUF& duf, VectorDU2& du2, VectorIPIV& ipiv,
             MatrixB& b, MatrixX& x, real_type& rcond, VectorFERR& ferr,
             VectorBERR& berr, integer_t& info, optimal_workspace work ) {
-        compute( fact, trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x,
+        invoke( fact, trans, n, dl, d, du, dlf, df, duf, du2, ipiv, b, x,
                 rcond, ferr, berr, info, minimal_workspace() );
     }
 
@@ -341,8 +337,8 @@
         VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::vector_traits< VectorDL >::value_type value_type;
     integer_t info(0);
-    gtsvx_impl< value_type >::compute( fact, trans, n, dl, d, du, dlf,
-            df, duf, du2, ipiv, b, x, rcond, ferr, berr, info, work );
+    gtsvx_impl< value_type >::invoke( fact, trans, n, dl, d, du, dlf, df,
+            duf, du2, ipiv, b, x, rcond, ferr, berr, info, work );
     return info;
 }
 
@@ -359,8 +355,8 @@
         VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::vector_traits< VectorDL >::value_type value_type;
     integer_t info(0);
-    gtsvx_impl< value_type >::compute( fact, trans, n, dl, d, du, dlf,
-            df, duf, du2, ipiv, b, x, rcond, ferr, berr, info,
+    gtsvx_impl< value_type >::invoke( fact, trans, n, dl, d, du, dlf, df,
+            duf, du2, ipiv, b, x, rcond, ferr, berr, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbev.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbev.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HBEV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -58,12 +56,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename VectorW, typename MatrixZ,
             typename WORK, typename RWORK >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z,
             integer_t& info, detail::workspace2< WORK, RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -89,21 +87,21 @@
 
     // minimal workspace specialization
     template< typename MatrixAB, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( jobz, n, kd, ab, w, z, info, workspace( tmp_work,
+        invoke( jobz, n, kd, ab, w, z, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z,
             integer_t& info, optimal_workspace work ) {
-        compute( jobz, n, kd, ab, w, z, info, minimal_workspace() );
+        invoke( jobz, n, kd, ab, w, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -124,8 +122,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbev_impl< value_type >::compute( jobz, n, kd, ab, w, z, info,
-            work );
+    hbev_impl< value_type >::invoke( jobz, n, kd, ab, w, z, info, work );
     return info;
 }
 
@@ -135,7 +132,7 @@
         integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbev_impl< value_type >::compute( jobz, n, kd, ab, w, z, info,
+    hbev_impl< value_type >::invoke( jobz, n, kd, ab, w, z, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HBEVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -63,12 +61,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename VectorW, typename MatrixZ,
             typename WORK, typename RWORK, typename IWORK >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z,
             integer_t& info, detail::workspace3< WORK, RWORK, IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -100,7 +98,7 @@
 
     // minimal workspace specialization
     template< typename MatrixAB, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( jobz,
@@ -109,13 +107,13 @@
                 n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
                 n ) );
-        compute( jobz, n, kd, ab, w, z, info, workspace( tmp_work, tmp_rwork,
+        invoke( jobz, n, kd, ab, w, z, info, workspace( tmp_work, tmp_rwork,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z,
             integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
@@ -131,7 +129,7 @@
         traits::detail::array< real_type > tmp_rwork(
                 traits::detail::to_int( opt_size_rwork ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, n, kd, ab, w, z, info, workspace( tmp_work, tmp_rwork,
+        invoke( jobz, n, kd, ab, w, z, info, workspace( tmp_work, tmp_rwork,
                 tmp_iwork ) );
     }
 
@@ -174,8 +172,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbevd_impl< value_type >::compute( jobz, n, kd, ab, w, z, info,
-            work );
+    hbevd_impl< value_type >::invoke( jobz, n, kd, ab, w, z, info, work );
     return info;
 }
 
@@ -185,7 +182,7 @@
         integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbevd_impl< value_type >::compute( jobz, n, kd, ab, w, z, info,
+    hbevd_impl< value_type >::invoke( jobz, n, kd, ab, w, z, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbevx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HBEVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -68,13 +66,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixQ, typename VectorW,
             typename MatrixZ, typename VectorIFAIL, typename WORK,
             typename RWORK, typename IWORK >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             integer_t const kd, MatrixAB& ab, MatrixQ& q, real_type const vl,
             real_type const vu, integer_t const il, integer_t const iu,
             real_type const abstol, integer_t& m, VectorW& w, MatrixZ& z,
@@ -115,7 +113,7 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixQ, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             integer_t const kd, MatrixAB& ab, MatrixQ& q, real_type const vl,
             real_type const vu, integer_t const il, integer_t const iu,
             real_type const abstol, integer_t& m, VectorW& w, MatrixZ& z,
@@ -123,19 +121,19 @@
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( jobz, range, n, kd, ab, q, vl, vu, il, iu, abstol, m, w, z,
+        invoke( jobz, range, n, kd, ab, q, vl, vu, il, iu, abstol, m, w, z,
                 ifail, info, workspace( tmp_work, tmp_rwork, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixQ, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             integer_t const kd, MatrixAB& ab, MatrixQ& q, real_type const vl,
             real_type const vu, integer_t const il, integer_t const iu,
             real_type const abstol, integer_t& m, VectorW& w, MatrixZ& z,
             VectorIFAIL& ifail, integer_t& info, optimal_workspace work ) {
-        compute( jobz, range, n, kd, ab, q, vl, vu, il, iu, abstol, m, w, z,
+        invoke( jobz, range, n, kd, ab, q, vl, vu, il, iu, abstol, m, w, z,
                 ifail, info, minimal_workspace() );
     }
 
@@ -166,7 +164,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbevx_impl< value_type >::compute( jobz, range, n, kd, ab, q, vl, vu,
+    hbevx_impl< value_type >::invoke( jobz, range, n, kd, ab, q, vl, vu,
             il, iu, abstol, m, w, z, ifail, info, work );
     return info;
 }
@@ -183,7 +181,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbevx_impl< value_type >::compute( jobz, range, n, kd, ab, q, vl, vu,
+    hbevx_impl< value_type >::invoke( jobz, range, n, kd, ab, q, vl, vu,
             il, iu, abstol, m, w, z, ifail, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HBGV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -62,13 +60,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename VectorW,
             typename MatrixZ, typename WORK, typename RWORK >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, VectorW& w, MatrixZ& z, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
@@ -102,24 +99,24 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename VectorW,
             typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, VectorW& w, MatrixZ& z, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( jobz, n, ka, kb, ab, bb, w, z, info, workspace( tmp_work,
+        invoke( jobz, n, ka, kb, ab, bb, w, z, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename VectorW,
             typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, VectorW& w, MatrixZ& z, integer_t& info,
             optimal_workspace work ) {
-        compute( jobz, n, ka, kb, ab, bb, w, z, info, minimal_workspace() );
+        invoke( jobz, n, ka, kb, ab, bb, w, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -140,7 +137,7 @@
         VectorW& w, MatrixZ& z, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbgv_impl< value_type >::compute( jobz, n, ka, kb, ab, bb, w, z,
+    hbgv_impl< value_type >::invoke( jobz, n, ka, kb, ab, bb, w, z,
             info, work );
     return info;
 }
@@ -153,7 +150,7 @@
         VectorW& w, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbgv_impl< value_type >::compute( jobz, n, ka, kb, ab, bb, w, z,
+    hbgv_impl< value_type >::invoke( jobz, n, ka, kb, ab, bb, w, z,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HBGVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -67,13 +65,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename VectorW,
             typename MatrixZ, typename WORK, typename RWORK, typename IWORK >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, VectorW& w, MatrixZ& z, integer_t& info,
             detail::workspace3< WORK, RWORK, IWORK > work ) {
@@ -113,7 +110,7 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename VectorW,
             typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, VectorW& w, MatrixZ& z, integer_t& info,
             minimal_workspace work ) {
@@ -123,14 +120,14 @@
                 n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
                 n ) );
-        compute( jobz, n, ka, kb, ab, bb, w, z, info, workspace( tmp_work,
+        invoke( jobz, n, ka, kb, ab, bb, w, z, info, workspace( tmp_work,
                 tmp_rwork, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename VectorW,
             typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, VectorW& w, MatrixZ& z, integer_t& info,
             optimal_workspace work ) {
@@ -148,7 +145,7 @@
         traits::detail::array< real_type > tmp_rwork(
                 traits::detail::to_int( opt_size_rwork ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, n, ka, kb, ab, bb, w, z, info, workspace( tmp_work,
+        invoke( jobz, n, ka, kb, ab, bb, w, z, info, workspace( tmp_work,
                 tmp_rwork, tmp_iwork ) );
     }
 
@@ -191,7 +188,7 @@
         VectorW& w, MatrixZ& z, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbgvd_impl< value_type >::compute( jobz, n, ka, kb, ab, bb, w, z,
+    hbgvd_impl< value_type >::invoke( jobz, n, ka, kb, ab, bb, w, z,
             info, work );
     return info;
 }
@@ -204,7 +201,7 @@
         VectorW& w, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbgvd_impl< value_type >::compute( jobz, n, ka, kb, ab, bb, w, z,
+    hbgvd_impl< value_type >::invoke( jobz, n, ka, kb, ab, bb, w, z,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hbgvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HBGVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -72,14 +70,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename MatrixQ,
             typename VectorW, typename MatrixZ, typename VectorIFAIL,
             typename WORK, typename RWORK, typename IWORK >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, MatrixQ& q, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
@@ -124,7 +121,7 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename MatrixQ,
             typename VectorW, typename MatrixZ, typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, MatrixQ& q, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
@@ -133,7 +130,7 @@
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( jobz, range, n, ka, kb, ab, bb, q, vl, vu, il, iu, abstol, m,
+        invoke( jobz, range, n, ka, kb, ab, bb, q, vl, vu, il, iu, abstol, m,
                 w, z, ifail, info, workspace( tmp_work, tmp_rwork,
                 tmp_iwork ) );
     }
@@ -141,13 +138,13 @@
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename MatrixQ,
             typename VectorW, typename MatrixZ, typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, MatrixQ& q, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             integer_t& info, optimal_workspace work ) {
-        compute( jobz, range, n, ka, kb, ab, bb, q, vl, vu, il, iu, abstol, m,
+        invoke( jobz, range, n, ka, kb, ab, bb, q, vl, vu, il, iu, abstol, m,
                 w, z, ifail, info, minimal_workspace() );
     }
 
@@ -180,7 +177,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbgvx_impl< value_type >::compute( jobz, range, n, ka, kb, ab, bb, q,
+    hbgvx_impl< value_type >::invoke( jobz, range, n, ka, kb, ab, bb, q,
             vl, vu, il, iu, abstol, m, w, z, ifail, info, work );
     return info;
 }
@@ -198,7 +195,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    hbgvx_impl< value_type >::compute( jobz, range, n, ka, kb, ab, bb, q,
+    hbgvx_impl< value_type >::invoke( jobz, range, n, ka, kb, ab, bb, q,
             vl, vu, il, iu, abstol, m, w, z, ifail, info,
             optimal_workspace() );
     return info;
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heev.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heev.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HEEV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -57,12 +55,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorW, typename WORK,
             typename RWORK >
-    static void compute( char const jobz, MatrixA& a, VectorW& w,
+    static void invoke( char const jobz, MatrixA& a, VectorW& w,
             integer_t& info, detail::workspace2< WORK, RWORK > work ) {
         BOOST_ASSERT( jobz == 'N' || jobz == 'V' );
         BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
@@ -84,18 +82,18 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorW >
-    static void compute( char const jobz, MatrixA& a, VectorW& w,
+    static void invoke( char const jobz, MatrixA& a, VectorW& w,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( jobz, a, w, info, workspace( tmp_work, tmp_rwork ) );
+        invoke( jobz, a, w, info, workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorW >
-    static void compute( char const jobz, MatrixA& a, VectorW& w,
+    static void invoke( char const jobz, MatrixA& a, VectorW& w,
             integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
@@ -106,7 +104,7 @@
                 &opt_size_work, -1, traits::vector_storage(tmp_rwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobz, a, w, info, workspace( tmp_work, tmp_rwork ) );
+        invoke( jobz, a, w, info, workspace( tmp_work, tmp_rwork ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -125,7 +123,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    heev_impl< value_type >::compute( jobz, a, w, info, work );
+    heev_impl< value_type >::invoke( jobz, a, w, info, work );
     return info;
 }
 
@@ -134,7 +132,7 @@
 inline integer_t heev( char const jobz, MatrixA& a, VectorW& w ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    heev_impl< value_type >::compute( jobz, a, w, info,
+    heev_impl< value_type >::invoke( jobz, a, w, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HEEVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -61,12 +59,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorW, typename WORK,
             typename RWORK, typename IWORK >
-    static void compute( char const jobz, MatrixA& a, VectorW& w,
+    static void invoke( char const jobz, MatrixA& a, VectorW& w,
             integer_t& info, detail::workspace3< WORK, RWORK, IWORK > work ) {
         BOOST_ASSERT( jobz == 'N' || jobz == 'V' );
         BOOST_ASSERT( traits::matrix_uplo_tag(a) == 'U' ||
@@ -93,7 +91,7 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorW >
-    static void compute( char const jobz, MatrixA& a, VectorW& w,
+    static void invoke( char const jobz, MatrixA& a, VectorW& w,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( jobz,
                 traits::matrix_num_columns(a) ) );
@@ -101,13 +99,13 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
                 traits::matrix_num_columns(a) ) );
-        compute( jobz, a, w, info, workspace( tmp_work, tmp_rwork,
+        invoke( jobz, a, w, info, workspace( tmp_work, tmp_rwork,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorW >
-    static void compute( char const jobz, MatrixA& a, VectorW& w,
+    static void invoke( char const jobz, MatrixA& a, VectorW& w,
             integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         real_type opt_size_rwork;
@@ -122,7 +120,7 @@
         traits::detail::array< real_type > tmp_rwork(
                 traits::detail::to_int( opt_size_rwork ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, a, w, info, workspace( tmp_work, tmp_rwork,
+        invoke( jobz, a, w, info, workspace( tmp_work, tmp_rwork,
                 tmp_iwork ) );
     }
 
@@ -163,7 +161,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    heevd_impl< value_type >::compute( jobz, a, w, info, work );
+    heevd_impl< value_type >::invoke( jobz, a, w, info, work );
     return info;
 }
 
@@ -172,7 +170,7 @@
 inline integer_t heevd( char const jobz, MatrixA& a, VectorW& w ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    heevd_impl< value_type >::compute( jobz, a, w, info,
+    heevd_impl< value_type >::invoke( jobz, a, w, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HEEVR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -69,13 +67,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixZ,
             typename VectorISUPPZ, typename WORK, typename RWORK,
             typename IWORK >
-    static void compute( char const jobz, char const range, MatrixA& a,
+    static void invoke( char const jobz, char const range, MatrixA& a,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz, integer_t& info,
@@ -115,7 +113,7 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixZ,
             typename VectorISUPPZ >
-    static void compute( char const jobz, char const range, MatrixA& a,
+    static void invoke( char const jobz, char const range, MatrixA& a,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz, integer_t& info,
@@ -126,14 +124,14 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, isuppz,
-                info, workspace( tmp_work, tmp_rwork, tmp_iwork ) );
+        invoke( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, isuppz, info,
+                workspace( tmp_work, tmp_rwork, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixZ,
             typename VectorISUPPZ >
-    static void compute( char const jobz, char const range, MatrixA& a,
+    static void invoke( char const jobz, char const range, MatrixA& a,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz, integer_t& info,
@@ -153,8 +151,8 @@
         traits::detail::array< real_type > tmp_rwork(
                 traits::detail::to_int( opt_size_rwork ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, isuppz,
-                info, workspace( tmp_work, tmp_rwork, tmp_iwork ) );
+        invoke( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, isuppz, info,
+                workspace( tmp_work, tmp_rwork, tmp_iwork ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -183,7 +181,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    heevr_impl< value_type >::compute( jobz, range, a, vl, vu, il, iu,
+    heevr_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
             abstol, m, w, z, isuppz, info, work );
     return info;
 }
@@ -199,7 +197,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    heevr_impl< value_type >::compute( jobz, range, a, vl, vu, il, iu,
+    heevr_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
             abstol, m, w, z, isuppz, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/heevx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HEEVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -67,13 +65,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixZ,
             typename VectorIFAIL, typename WORK, typename RWORK,
             typename IWORK >
-    static void compute( char const jobz, char const range, MatrixA& a,
+    static void invoke( char const jobz, char const range, MatrixA& a,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorIFAIL& ifail, integer_t& info,
@@ -111,7 +109,7 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixZ,
             typename VectorIFAIL >
-    static void compute( char const jobz, char const range, MatrixA& a,
+    static void invoke( char const jobz, char const range, MatrixA& a,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorIFAIL& ifail, integer_t& info,
@@ -122,14 +120,14 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, ifail, info,
+        invoke( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, ifail, info,
                 workspace( tmp_work, tmp_rwork, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixZ,
             typename VectorIFAIL >
-    static void compute( char const jobz, char const range, MatrixA& a,
+    static void invoke( char const jobz, char const range, MatrixA& a,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorIFAIL& ifail, integer_t& info,
@@ -149,7 +147,7 @@
                 traits::vector_storage(ifail), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, ifail, info,
+        invoke( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, ifail, info,
                 workspace( tmp_work, tmp_rwork, tmp_iwork ) );
     }
 
@@ -179,7 +177,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    heevx_impl< value_type >::compute( jobz, range, a, vl, vu, il, iu,
+    heevx_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
             abstol, m, w, z, ifail, info, work );
     return info;
 }
@@ -195,7 +193,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    heevx_impl< value_type >::compute( jobz, range, a, vl, vu, il, iu,
+    heevx_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
             abstol, m, w, z, ifail, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HEGV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -61,13 +59,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW,
             typename WORK, typename RWORK >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
             integer_t& info, detail::workspace2< WORK, RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -94,18 +91,18 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( itype, jobz, n, a, b, w, info, workspace( tmp_work,
+        invoke( itype, jobz, n, a, b, w, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
             integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
@@ -117,7 +114,7 @@
                 traits::vector_storage(tmp_rwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( itype, jobz, n, a, b, w, info, workspace( tmp_work,
+        invoke( itype, jobz, n, a, b, w, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
@@ -139,7 +136,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hegv_impl< value_type >::compute( itype, jobz, n, a, b, w, info,
+    hegv_impl< value_type >::invoke( itype, jobz, n, a, b, w, info,
             work );
     return info;
 }
@@ -150,7 +147,7 @@
         integer_t const n, MatrixA& a, MatrixB& b, VectorW& w ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hegv_impl< value_type >::compute( itype, jobz, n, a, b, w, info,
+    hegv_impl< value_type >::invoke( itype, jobz, n, a, b, w, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HEGVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -63,13 +61,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW,
             typename WORK, typename RWORK, typename IWORK >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
             integer_t& info, detail::workspace3< WORK, RWORK, IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -101,7 +98,7 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( jobz,
@@ -110,13 +107,13 @@
                 n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
                 n ) );
-        compute( itype, jobz, n, a, b, w, info, workspace( tmp_work,
-                tmp_rwork, tmp_iwork ) );
+        invoke( itype, jobz, n, a, b, w, info, workspace( tmp_work, tmp_rwork,
+                tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
             integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
@@ -132,8 +129,8 @@
         traits::detail::array< real_type > tmp_rwork(
                 traits::detail::to_int( opt_size_rwork ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( itype, jobz, n, a, b, w, info, workspace( tmp_work,
-                tmp_rwork, tmp_iwork ) );
+        invoke( itype, jobz, n, a, b, w, info, workspace( tmp_work, tmp_rwork,
+                tmp_iwork ) );
     }
 
     static integer_t min_size_work( char const jobz, integer_t const n ) {
@@ -175,7 +172,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hegvd_impl< value_type >::compute( itype, jobz, n, a, b, w, info,
+    hegvd_impl< value_type >::invoke( itype, jobz, n, a, b, w, info,
             work );
     return info;
 }
@@ -186,7 +183,7 @@
         integer_t const n, MatrixA& a, MatrixB& b, VectorW& w ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hegvd_impl< value_type >::compute( itype, jobz, n, a, b, w, info,
+    hegvd_impl< value_type >::invoke( itype, jobz, n, a, b, w, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hegvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HEGVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -72,14 +70,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW,
             typename MatrixZ, typename VectorIFAIL, typename WORK,
             typename RWORK, typename IWORK >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             char const range, integer_t const n, MatrixA& a, MatrixB& b,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
@@ -120,7 +117,7 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             char const range, integer_t const n, MatrixA& a, MatrixB& b,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
@@ -129,14 +126,14 @@
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( itype, jobz, range, n, a, b, vl, vu, il, iu, abstol, m, w, z,
+        invoke( itype, jobz, range, n, a, b, vl, vu, il, iu, abstol, m, w, z,
                 ifail, info, workspace( tmp_work, tmp_rwork, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             char const range, integer_t const n, MatrixA& a, MatrixB& b,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
@@ -155,7 +152,7 @@
                 traits::vector_storage(ifail), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( itype, jobz, range, n, a, b, vl, vu, il, iu, abstol, m, w, z,
+        invoke( itype, jobz, range, n, a, b, vl, vu, il, iu, abstol, m, w, z,
                 ifail, info, workspace( tmp_work, tmp_rwork, tmp_iwork ) );
     }
 
@@ -186,7 +183,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hegvx_impl< value_type >::compute( itype, jobz, range, n, a, b, vl,
+    hegvx_impl< value_type >::invoke( itype, jobz, range, n, a, b, vl,
             vu, il, iu, abstol, m, w, z, ifail, info, work );
     return info;
 }
@@ -203,7 +200,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hegvx_impl< value_type >::compute( itype, jobz, range, n, a, b, vl,
+    hegvx_impl< value_type >::invoke( itype, jobz, range, n, a, b, vl,
             vu, il, iu, abstol, m, w, z, ifail, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HESV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -59,13 +57,18 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
+
+    // uniform high-level dispatching-function
+    template< typename MatrixA, typename MatrixB, typename VectorP >
+    static void solve( MatrixA& A, MatrixB& B, VectorP& pivot,
+            integer_t& info ) {
+        invoke( A, pivot, B, info );
+    }
 
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB,
             typename WORK >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -91,15 +94,15 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(  ) );
-        compute( a, ipiv, b, info, workspace( tmp_work ) );
+        invoke( a, ipiv, b, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         detail::hesv( traits::matrix_uplo_tag(a),
@@ -109,7 +112,7 @@
                 traits::leading_dimension(b), &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, ipiv, b, info, workspace( tmp_work ) );
+        invoke( a, ipiv, b, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work(  ) {
@@ -125,7 +128,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hesv_impl< value_type >::compute( a, ipiv, b, info, work );
+    hesv_impl< value_type >::invoke( a, ipiv, b, info, work );
     return info;
 }
 
@@ -134,7 +137,7 @@
 inline integer_t hesv( MatrixA& a, VectorIPIV& ipiv, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hesv_impl< value_type >::compute( a, ipiv, b, info,
+    hesv_impl< value_type >::invoke( a, ipiv, b, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hesvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HESVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -67,14 +65,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename RWORK >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
@@ -126,7 +123,7 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
@@ -134,7 +131,7 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( fact, a, af, ipiv, b, x, rcond, ferr, berr, info,
+        invoke( fact, a, af, ipiv, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -142,7 +139,7 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
@@ -160,7 +157,7 @@
                 &opt_size_work, -1, traits::vector_storage(tmp_rwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( fact, a, af, ipiv, b, x, rcond, ferr, berr, info,
+        invoke( fact, a, af, ipiv, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -184,7 +181,7 @@
         VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hesvx_impl< value_type >::compute( fact, a, af, ipiv, b, x, rcond,
+    hesvx_impl< value_type >::invoke( fact, a, af, ipiv, b, x, rcond,
             ferr, berr, info, work );
     return info;
 }
@@ -199,7 +196,7 @@
         VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    hesvx_impl< value_type >::compute( fact, a, af, ipiv, b, x, rcond,
+    hesvx_impl< value_type >::invoke( fact, a, af, ipiv, b, x, rcond,
             ferr, berr, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpev.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpev.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HPEV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -58,12 +56,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ,
             typename WORK, typename RWORK >
-    static void compute( char const jobz, integer_t const n, MatrixAP& ap,
+    static void invoke( char const jobz, integer_t const n, MatrixAP& ap,
             VectorW& w, MatrixZ& z, integer_t& info, detail::workspace2< WORK,
             RWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -86,18 +84,18 @@
 
     // minimal workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n, MatrixAP& ap,
+    static void invoke( char const jobz, integer_t const n, MatrixAP& ap,
             VectorW& w, MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( jobz, n, ap, w, z, info, workspace( tmp_work, tmp_rwork ) );
+        invoke( jobz, n, ap, w, z, info, workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n, MatrixAP& ap,
+    static void invoke( char const jobz, integer_t const n, MatrixAP& ap,
             VectorW& w, MatrixZ& z, integer_t& info, optimal_workspace work ) {
-        compute( jobz, n, ap, w, z, info, minimal_workspace() );
+        invoke( jobz, n, ap, w, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -117,7 +115,7 @@
         VectorW& w, MatrixZ& z, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpev_impl< value_type >::compute( jobz, n, ap, w, z, info, work );
+    hpev_impl< value_type >::invoke( jobz, n, ap, w, z, info, work );
     return info;
 }
 
@@ -127,7 +125,7 @@
         VectorW& w, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpev_impl< value_type >::compute( jobz, n, ap, w, z, info,
+    hpev_impl< value_type >::invoke( jobz, n, ap, w, z, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HPEVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -61,12 +59,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ,
             typename WORK, typename RWORK, typename IWORK >
-    static void compute( char const jobz, integer_t const n, MatrixAP& ap,
+    static void invoke( char const jobz, integer_t const n, MatrixAP& ap,
             VectorW& w, MatrixZ& z, integer_t& info, detail::workspace3< WORK,
             RWORK, IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -95,7 +93,7 @@
 
     // minimal workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n, MatrixAP& ap,
+    static void invoke( char const jobz, integer_t const n, MatrixAP& ap,
             VectorW& w, MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( jobz,
                 n ) );
@@ -103,13 +101,13 @@
                 n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
                 n ) );
-        compute( jobz, n, ap, w, z, info, workspace( tmp_work, tmp_rwork,
+        invoke( jobz, n, ap, w, z, info, workspace( tmp_work, tmp_rwork,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n, MatrixAP& ap,
+    static void invoke( char const jobz, integer_t const n, MatrixAP& ap,
             VectorW& w, MatrixZ& z, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         real_type opt_size_rwork;
@@ -124,7 +122,7 @@
         traits::detail::array< real_type > tmp_rwork(
                 traits::detail::to_int( opt_size_rwork ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, n, ap, w, z, info, workspace( tmp_work, tmp_rwork,
+        invoke( jobz, n, ap, w, z, info, workspace( tmp_work, tmp_rwork,
                 tmp_iwork ) );
     }
 
@@ -166,7 +164,7 @@
         VectorW& w, MatrixZ& z, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpevd_impl< value_type >::compute( jobz, n, ap, w, z, info, work );
+    hpevd_impl< value_type >::invoke( jobz, n, ap, w, z, info, work );
     return info;
 }
 
@@ -176,7 +174,7 @@
         VectorW& w, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpevd_impl< value_type >::compute( jobz, n, ap, w, z, info,
+    hpevd_impl< value_type >::invoke( jobz, n, ap, w, z, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpevx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HPEVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -63,13 +61,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ,
             typename VectorIFAIL, typename WORK, typename RWORK,
             typename IWORK >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             MatrixAP& ap, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
@@ -101,7 +99,7 @@
     // minimal workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ,
             typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             MatrixAP& ap, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
@@ -109,19 +107,19 @@
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( jobz, range, n, ap, vl, vu, il, iu, abstol, m, w, z, ifail,
+        invoke( jobz, range, n, ap, vl, vu, il, iu, abstol, m, w, z, ifail,
                 info, workspace( tmp_work, tmp_rwork, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ,
             typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             MatrixAP& ap, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             integer_t& info, optimal_workspace work ) {
-        compute( jobz, range, n, ap, vl, vu, il, iu, abstol, m, w, z, ifail,
+        invoke( jobz, range, n, ap, vl, vu, il, iu, abstol, m, w, z, ifail,
                 info, minimal_workspace() );
     }
 
@@ -151,8 +149,8 @@
         MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpevx_impl< value_type >::compute( jobz, range, n, ap, vl, vu, il,
-            iu, abstol, m, w, z, ifail, info, work );
+    hpevx_impl< value_type >::invoke( jobz, range, n, ap, vl, vu, il, iu,
+            abstol, m, w, z, ifail, info, work );
     return info;
 }
 
@@ -168,8 +166,8 @@
         MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpevx_impl< value_type >::compute( jobz, range, n, ap, vl, vu, il,
-            iu, abstol, m, w, z, ifail, info, optimal_workspace() );
+    hpevx_impl< value_type >::invoke( jobz, range, n, ap, vl, vu, il, iu,
+            abstol, m, w, z, ifail, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HPGV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -58,13 +56,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ, typename WORK, typename RWORK >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, integer_t& info, detail::workspace2< WORK,
             RWORK > work ) {
@@ -93,22 +90,22 @@
     // minimal workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( itype, jobz, n, ap, bp, w, z, info, workspace( tmp_work,
+        invoke( itype, jobz, n, ap, bp, w, z, info, workspace( tmp_work,
                 tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, integer_t& info, optimal_workspace work ) {
-        compute( itype, jobz, n, ap, bp, w, z, info, minimal_workspace() );
+        invoke( itype, jobz, n, ap, bp, w, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -129,8 +126,8 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpgv_impl< value_type >::compute( itype, jobz, n, ap, bp, w, z,
-            info, work );
+    hpgv_impl< value_type >::invoke( itype, jobz, n, ap, bp, w, z, info,
+            work );
     return info;
 }
 
@@ -142,8 +139,8 @@
         MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpgv_impl< value_type >::compute( itype, jobz, n, ap, bp, w, z,
-            info, optimal_workspace() );
+    hpgv_impl< value_type >::invoke( itype, jobz, n, ap, bp, w, z, info,
+            optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HPGVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -65,13 +63,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ, typename WORK, typename RWORK, typename IWORK >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, integer_t& info, detail::workspace3< WORK, RWORK,
             IWORK > work ) {
@@ -106,7 +103,7 @@
     // minimal workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( jobz,
@@ -115,14 +112,14 @@
                 n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
                 n ) );
-        compute( itype, jobz, n, ap, bp, w, z, info, workspace( tmp_work,
+        invoke( itype, jobz, n, ap, bp, w, z, info, workspace( tmp_work,
                 tmp_rwork, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
@@ -138,7 +135,7 @@
         traits::detail::array< real_type > tmp_rwork(
                 traits::detail::to_int( opt_size_rwork ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( itype, jobz, n, ap, bp, w, z, info, workspace( tmp_work,
+        invoke( itype, jobz, n, ap, bp, w, z, info, workspace( tmp_work,
                 tmp_rwork, tmp_iwork ) );
     }
 
@@ -181,8 +178,8 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpgvd_impl< value_type >::compute( itype, jobz, n, ap, bp, w, z,
-            info, work );
+    hpgvd_impl< value_type >::invoke( itype, jobz, n, ap, bp, w, z, info,
+            work );
     return info;
 }
 
@@ -194,8 +191,8 @@
         MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpgvd_impl< value_type >::compute( itype, jobz, n, ap, bp, w, z,
-            info, optimal_workspace() );
+    hpgvd_impl< value_type >::invoke( itype, jobz, n, ap, bp, w, z, info,
+            optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpgvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HPGVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -67,14 +65,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ, typename VectorIFAIL, typename WORK,
             typename RWORK, typename IWORK >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             char const range, integer_t const n, MatrixAP& ap, MatrixBP& bp,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
@@ -111,7 +108,7 @@
     // minimal workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             char const range, integer_t const n, MatrixAP& ap, MatrixBP& bp,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
@@ -120,20 +117,20 @@
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( itype, jobz, range, n, ap, bp, vl, vu, il, iu, abstol, m, w,
+        invoke( itype, jobz, range, n, ap, bp, vl, vu, il, iu, abstol, m, w,
                 z, ifail, info, workspace( tmp_work, tmp_rwork, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             char const range, integer_t const n, MatrixAP& ap, MatrixBP& bp,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorIFAIL& ifail, integer_t& info,
             optimal_workspace work ) {
-        compute( itype, jobz, range, n, ap, bp, vl, vu, il, iu, abstol, m, w,
+        invoke( itype, jobz, range, n, ap, bp, vl, vu, il, iu, abstol, m, w,
                 z, ifail, info, minimal_workspace() );
     }
 
@@ -164,7 +161,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpgvx_impl< value_type >::compute( itype, jobz, range, n, ap, bp, vl,
+    hpgvx_impl< value_type >::invoke( itype, jobz, range, n, ap, bp, vl,
             vu, il, iu, abstol, m, w, z, ifail, info, work );
     return info;
 }
@@ -181,7 +178,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpgvx_impl< value_type >::compute( itype, jobz, range, n, ap, bp, vl,
+    hpgvx_impl< value_type >::invoke( itype, jobz, range, n, ap, bp, vl,
             vu, il, iu, abstol, m, w, z, ifail, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HPSV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -52,12 +50,17 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
+
+    // uniform high-level dispatching-function
+    template< typename MatrixA, typename MatrixB, typename VectorP >
+    static void solve( MatrixA& A, MatrixB& B, VectorP& pivot,
+            integer_t& info ) {
+        invoke( A, pivot, B, info );
+    }
 
     // templated specialization
     template< typename MatrixAP, typename VectorIPIV, typename MatrixB >
-    static void compute( MatrixAP& ap, VectorIPIV& ipiv, MatrixB& b,
+    static void invoke( MatrixAP& ap, VectorIPIV& ipiv, MatrixB& b,
             integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixAP >::value_type, typename traits::matrix_traits<
@@ -82,7 +85,7 @@
 inline integer_t hpsv( MatrixAP& ap, VectorIPIV& ipiv, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpsv_impl< value_type >::compute( ap, ipiv, b, info );
+    hpsv_impl< value_type >::invoke( ap, ipiv, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/hpsvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_HPSVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -64,14 +62,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename RWORK >
-    static void compute( char const fact, integer_t const n, MatrixAP& ap,
+    static void invoke( char const fact, integer_t const n, MatrixAP& ap,
             MatrixAFP& afp, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, detail::workspace2< WORK, RWORK > work ) {
@@ -115,13 +112,13 @@
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, integer_t const n, MatrixAP& ap,
+    static void invoke( char const fact, integer_t const n, MatrixAP& ap,
             MatrixAFP& afp, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( fact, n, ap, afp, ipiv, b, x, rcond, ferr, berr, info,
+        invoke( fact, n, ap, afp, ipiv, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -129,11 +126,11 @@
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, integer_t const n, MatrixAP& ap,
+    static void invoke( char const fact, integer_t const n, MatrixAP& ap,
             MatrixAFP& afp, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, optimal_workspace work ) {
-        compute( fact, n, ap, afp, ipiv, b, x, rcond, ferr, berr, info,
+        invoke( fact, n, ap, afp, ipiv, b, x, rcond, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -157,7 +154,7 @@
         VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpsvx_impl< value_type >::compute( fact, n, ap, afp, ipiv, b, x,
+    hpsvx_impl< value_type >::invoke( fact, n, ap, afp, ipiv, b, x,
             rcond, ferr, berr, info, work );
     return info;
 }
@@ -172,7 +169,7 @@
         VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    hpsvx_impl< value_type >::compute( fact, n, ap, afp, ipiv, b, x,
+    hpsvx_impl< value_type >::invoke( fact, n, ap, afp, ipiv, b, x,
             rcond, ferr, berr, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lacgv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lacgv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lacgv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_LACGV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -48,12 +46,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename VectorX >
-    static void compute( integer_t const n, VectorX& x,
-            integer_t const incx ) {
+    static void invoke( integer_t const n, VectorX& x, integer_t const incx ) {
         BOOST_ASSERT( n >= 0 );
         detail::lacgv( n, traits::vector_storage(x), incx );
     }
@@ -66,7 +63,7 @@
         integer_t const incx ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
     integer_t info(0);
-    lacgv_impl< value_type >::compute( n, x, incx );
+    lacgv_impl< value_type >::invoke( n, x, incx );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lalsd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lalsd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/lalsd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_LALSD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -82,12 +80,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixB,
             typename WORK, typename IWORK >
-    static void compute( char const uplo, integer_t const smlsiz,
+    static void invoke( char const uplo, integer_t const smlsiz,
             integer_t const n, VectorD& d, VectorE& e, MatrixB& b,
             real_type const rcond, integer_t& rank, integer_t& info,
             detail::workspace2< WORK, IWORK > work ) {
@@ -120,7 +118,7 @@
 
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixB >
-    static void compute( char const uplo, integer_t const smlsiz,
+    static void invoke( char const uplo, integer_t const smlsiz,
             integer_t const n, VectorD& d, VectorE& e, MatrixB& b,
             real_type const rcond, integer_t& rank, integer_t& info,
             minimal_workspace work ) {
@@ -132,17 +130,17 @@
                 nlvl, traits::matrix_num_columns(b) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n,
                 nlvl ) );
-        compute( uplo, smlsiz, n, d, e, b, rcond, rank, info,
+        invoke( uplo, smlsiz, n, d, e, b, rcond, rank, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixB >
-    static void compute( char const uplo, integer_t const smlsiz,
+    static void invoke( char const uplo, integer_t const smlsiz,
             integer_t const n, VectorD& d, VectorE& e, MatrixB& b,
             real_type const rcond, integer_t& rank, integer_t& info,
             optimal_workspace work ) {
-        compute( uplo, smlsiz, n, d, e, b, rcond, rank, info,
+        invoke( uplo, smlsiz, n, d, e, b, rcond, rank, info,
                 minimal_workspace() );
     }
 
@@ -165,12 +163,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixB,
             typename WORK, typename RWORK, typename IWORK >
-    static void compute( char const uplo, integer_t const smlsiz,
+    static void invoke( char const uplo, integer_t const smlsiz,
             integer_t const n, VectorD& d, VectorE& e, MatrixB& b,
             real_type const rcond, integer_t& rank, integer_t& info,
             detail::workspace3< WORK, RWORK, IWORK > work ) {
@@ -205,7 +203,7 @@
 
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixB >
-    static void compute( char const uplo, integer_t const smlsiz,
+    static void invoke( char const uplo, integer_t const smlsiz,
             integer_t const n, VectorD& d, VectorE& e, MatrixB& b,
             real_type const rcond, integer_t& rank, integer_t& info,
             minimal_workspace work ) {
@@ -220,17 +218,17 @@
                 smlsiz, nlvl, traits::matrix_num_columns(b) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n,
                 nlvl ) );
-        compute( uplo, smlsiz, n, d, e, b, rcond, rank, info,
+        invoke( uplo, smlsiz, n, d, e, b, rcond, rank, info,
                 workspace( tmp_work, tmp_rwork, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixB >
-    static void compute( char const uplo, integer_t const smlsiz,
+    static void invoke( char const uplo, integer_t const smlsiz,
             integer_t const n, VectorD& d, VectorE& e, MatrixB& b,
             real_type const rcond, integer_t& rank, integer_t& info,
             optimal_workspace work ) {
-        compute( uplo, smlsiz, n, d, e, b, rcond, rank, info,
+        invoke( uplo, smlsiz, n, d, e, b, rcond, rank, info,
                 minimal_workspace() );
     }
 
@@ -262,7 +260,7 @@
         integer_t& rank, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    lalsd_impl< value_type >::compute( uplo, smlsiz, n, d, e, b, rcond,
+    lalsd_impl< value_type >::invoke( uplo, smlsiz, n, d, e, b, rcond,
             rank, info, work );
     return info;
 }
@@ -275,7 +273,7 @@
         integer_t& rank ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    lalsd_impl< value_type >::compute( uplo, smlsiz, n, d, e, b, rcond,
+    lalsd_impl< value_type >::invoke( uplo, smlsiz, n, d, e, b, rcond,
             rank, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/largv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/largv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/largv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_LARGV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -68,11 +66,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename VectorX, typename VectorY, typename VectorC >
-    static void compute( integer_t const n, VectorX& x, integer_t const incx,
+    static void invoke( integer_t const n, VectorX& x, integer_t const incx,
             VectorY& y, integer_t const incy, VectorC& c,
             integer_t const incc ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -96,11 +94,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // templated specialization
     template< typename VectorX, typename VectorY, typename VectorC >
-    static void compute( integer_t const n, VectorX& x, integer_t const incx,
+    static void invoke( integer_t const n, VectorX& x, integer_t const incx,
             VectorY& y, integer_t const incy, VectorC& c,
             integer_t const incc ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -123,7 +121,7 @@
         integer_t const incc ) {
     typedef typename traits::vector_traits< VectorX >::value_type value_type;
     integer_t info(0);
-    largv_impl< value_type >::compute( n, x, incx, y, incy, c, incc );
+    largv_impl< value_type >::invoke( n, x, incx, y, incy, c, incc );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_PBSV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -62,12 +60,17 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
+
+    // uniform high-level dispatching-function
+    template< typename MatrixA, typename MatrixB, typename VectorP >
+    static void solve( MatrixA& A, MatrixB& B, VectorP& pivot,
+            integer_t& info ) {
+        invoke( A, B, info );
+    }
 
     // templated specialization
     template< typename MatrixAB, typename MatrixB >
-    static void compute( integer_t const kd, MatrixAB& ab, MatrixB& b,
+    static void invoke( integer_t const kd, MatrixAB& ab, MatrixB& b,
             integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixAB >::value_type, typename traits::matrix_traits<
@@ -94,7 +97,7 @@
 inline integer_t pbsv( integer_t const kd, MatrixAB& ab, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    pbsv_impl< value_type >::compute( kd, ab, b, info );
+    pbsv_impl< value_type >::invoke( kd, ab, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/pbsvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_PBSVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -93,14 +91,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename IWORK >
-    static void compute( char const fact, integer_t const n,
+    static void invoke( char const fact, integer_t const n,
             integer_t const kd, MatrixAB& ab, MatrixAFB& afb, char& equed,
             VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
@@ -157,28 +154,28 @@
     template< typename MatrixAB, typename MatrixAFB, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, integer_t const n,
+    static void invoke( char const fact, integer_t const n,
             integer_t const kd, MatrixAB& ab, MatrixAFB& afb, char& equed,
             VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( fact, n, kd, ab, afb, equed, s, b, x, rcond, ferr, berr,
-                info, workspace( tmp_work, tmp_iwork ) );
+        invoke( fact, n, kd, ab, afb, equed, s, b, x, rcond, ferr, berr, info,
+                workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, integer_t const n,
+    static void invoke( char const fact, integer_t const n,
             integer_t const kd, MatrixAB& ab, MatrixAFB& afb, char& equed,
             VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( fact, n, kd, ab, afb, equed, s, b, x, rcond, ferr, berr,
-                info, minimal_workspace() );
+        invoke( fact, n, kd, ab, afb, equed, s, b, x, rcond, ferr, berr, info,
+                minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -196,14 +193,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename RWORK >
-    static void compute( char const fact, integer_t const n,
+    static void invoke( char const fact, integer_t const n,
             integer_t const kd, MatrixAB& ab, MatrixAFB& afb, char& equed,
             VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
@@ -257,28 +253,28 @@
     template< typename MatrixAB, typename MatrixAFB, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, integer_t const n,
+    static void invoke( char const fact, integer_t const n,
             integer_t const kd, MatrixAB& ab, MatrixAFB& afb, char& equed,
             VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( fact, n, kd, ab, afb, equed, s, b, x, rcond, ferr, berr,
-                info, workspace( tmp_work, tmp_rwork ) );
+        invoke( fact, n, kd, ab, afb, equed, s, b, x, rcond, ferr, berr, info,
+                workspace( tmp_work, tmp_rwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixAFB, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, integer_t const n,
+    static void invoke( char const fact, integer_t const n,
             integer_t const kd, MatrixAB& ab, MatrixAFB& afb, char& equed,
             VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( fact, n, kd, ab, afb, equed, s, b, x, rcond, ferr, berr,
-                info, minimal_workspace() );
+        invoke( fact, n, kd, ab, afb, equed, s, b, x, rcond, ferr, berr, info,
+                minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -302,7 +298,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    pbsvx_impl< value_type >::compute( fact, n, kd, ab, afb, equed, s, b,
+    pbsvx_impl< value_type >::invoke( fact, n, kd, ab, afb, equed, s, b,
             x, rcond, ferr, berr, info, work );
     return info;
 }
@@ -317,7 +313,7 @@
         MatrixAB >::value_type& rcond, VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    pbsvx_impl< value_type >::compute( fact, n, kd, ab, afb, equed, s, b,
+    pbsvx_impl< value_type >::invoke( fact, n, kd, ab, afb, equed, s, b,
             x, rcond, ferr, berr, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_POSV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -62,12 +60,17 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
+
+    // uniform high-level dispatching-function
+    template< typename MatrixA, typename MatrixB, typename VectorP >
+    static void solve( MatrixA& A, MatrixB& B, VectorP& pivot,
+            integer_t& info ) {
+        invoke( A, B, info );
+    }
 
     // templated specialization
     template< typename MatrixA, typename MatrixB >
-    static void compute( MatrixA& a, MatrixB& b, integer_t& info ) {
+    static void invoke( MatrixA& a, MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
                 MatrixB >::value_type >::value) );
@@ -93,7 +96,7 @@
 inline integer_t posv( MatrixA& a, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    posv_impl< value_type >::compute( a, b, info );
+    posv_impl< value_type >::invoke( a, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/posvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_POSVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -91,14 +89,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename IWORK >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, IWORK > work ) {
@@ -157,7 +154,7 @@
     template< typename MatrixA, typename MatrixAF, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
@@ -165,7 +162,7 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( fact, a, af, equed, s, b, x, rcond, ferr, berr, info,
+        invoke( fact, a, af, equed, s, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -173,11 +170,11 @@
     template< typename MatrixA, typename MatrixAF, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( fact, a, af, equed, s, b, x, rcond, ferr, berr, info,
+        invoke( fact, a, af, equed, s, b, x, rcond, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -196,14 +193,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename RWORK >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
@@ -259,7 +255,7 @@
     template< typename MatrixA, typename MatrixAF, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
@@ -267,7 +263,7 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( fact, a, af, equed, s, b, x, rcond, ferr, berr, info,
+        invoke( fact, a, af, equed, s, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -275,11 +271,11 @@
     template< typename MatrixA, typename MatrixAF, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( fact, a, af, equed, s, b, x, rcond, ferr, berr, info,
+        invoke( fact, a, af, equed, s, b, x, rcond, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -303,8 +299,8 @@
         VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    posvx_impl< value_type >::compute( fact, a, af, equed, s, b, x,
-            rcond, ferr, berr, info, work );
+    posvx_impl< value_type >::invoke( fact, a, af, equed, s, b, x, rcond,
+            ferr, berr, info, work );
     return info;
 }
 
@@ -318,8 +314,8 @@
         VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    posvx_impl< value_type >::compute( fact, a, af, equed, s, b, x,
-            rcond, ferr, berr, info, optimal_workspace() );
+    posvx_impl< value_type >::invoke( fact, a, af, equed, s, b, x, rcond,
+            ferr, berr, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_PPSV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -62,12 +60,17 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
+
+    // uniform high-level dispatching-function
+    template< typename MatrixA, typename MatrixB, typename VectorP >
+    static void solve( MatrixA& A, MatrixB& B, VectorP& pivot,
+            integer_t& info ) {
+        invoke( A, B, info );
+    }
 
     // templated specialization
     template< typename MatrixAP, typename MatrixB >
-    static void compute( MatrixAP& ap, MatrixB& b, integer_t& info ) {
+    static void invoke( MatrixAP& ap, MatrixB& b, integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixAP >::value_type, typename traits::matrix_traits<
                 MatrixB >::value_type >::value) );
@@ -90,7 +93,7 @@
 inline integer_t ppsv( MatrixAP& ap, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    ppsv_impl< value_type >::compute( ap, b, info );
+    ppsv_impl< value_type >::invoke( ap, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ppsvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_PPSVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -87,14 +85,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename VectorAFP, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename IWORK >
-    static void compute( char const fact, MatrixAP& ap, VectorAFP& afp,
+    static void invoke( char const fact, MatrixAP& ap, VectorAFP& afp,
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, IWORK > work ) {
@@ -148,7 +145,7 @@
     template< typename MatrixAP, typename VectorAFP, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixAP& ap, VectorAFP& afp,
+    static void invoke( char const fact, MatrixAP& ap, VectorAFP& afp,
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
@@ -156,7 +153,7 @@
                 traits::matrix_num_columns(ap) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(ap) ) );
-        compute( fact, ap, afp, equed, s, b, x, rcond, ferr, berr, info,
+        invoke( fact, ap, afp, equed, s, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -164,11 +161,11 @@
     template< typename MatrixAP, typename VectorAFP, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixAP& ap, VectorAFP& afp,
+    static void invoke( char const fact, MatrixAP& ap, VectorAFP& afp,
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( fact, ap, afp, equed, s, b, x, rcond, ferr, berr, info,
+        invoke( fact, ap, afp, equed, s, b, x, rcond, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -187,14 +184,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename VectorAFP, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename RWORK >
-    static void compute( char const fact, MatrixAP& ap, VectorAFP& afp,
+    static void invoke( char const fact, MatrixAP& ap, VectorAFP& afp,
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
@@ -245,7 +241,7 @@
     template< typename MatrixAP, typename VectorAFP, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixAP& ap, VectorAFP& afp,
+    static void invoke( char const fact, MatrixAP& ap, VectorAFP& afp,
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
@@ -253,7 +249,7 @@
                 traits::matrix_num_columns(ap) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(ap) ) );
-        compute( fact, ap, afp, equed, s, b, x, rcond, ferr, berr, info,
+        invoke( fact, ap, afp, equed, s, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -261,11 +257,11 @@
     template< typename MatrixAP, typename VectorAFP, typename VectorS,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixAP& ap, VectorAFP& afp,
+    static void invoke( char const fact, MatrixAP& ap, VectorAFP& afp,
             char& equed, VectorS& s, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( fact, ap, afp, equed, s, b, x, rcond, ferr, berr, info,
+        invoke( fact, ap, afp, equed, s, b, x, rcond, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -289,7 +285,7 @@
         VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    ppsvx_impl< value_type >::compute( fact, ap, afp, equed, s, b, x,
+    ppsvx_impl< value_type >::invoke( fact, ap, afp, equed, s, b, x,
             rcond, ferr, berr, info, work );
     return info;
 }
@@ -304,7 +300,7 @@
         VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    ppsvx_impl< value_type >::compute( fact, ap, afp, equed, s, b, x,
+    ppsvx_impl< value_type >::invoke( fact, ap, afp, equed, s, b, x,
             rcond, ferr, berr, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ptsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ptsv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ptsv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_PTSV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
 #include <boost/numeric/bindings/traits/is_real.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -67,12 +65,18 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::B > valid_keywords;
+
+    // uniform high-level dispatching-function
+    template< typename MatrixA, typename MatrixB, typename VectorP >
+    static void solve( MatrixA& A, MatrixB& B, VectorP& pivot,
+            integer_t& info ) {
+        invoke( B, info );
+    }
 
     // templated specialization
     template< typename VectorD, typename VectorE, typename MatrixB >
-    static void compute( integer_t const n, VectorD& d, VectorE& e,
-            MatrixB& b, integer_t& info ) {
+    static void invoke( integer_t const n, VectorD& d, VectorE& e, MatrixB& b,
+            integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorD >::value_type, typename traits::vector_traits<
                 VectorE >::value_type >::value) );
@@ -97,12 +101,18 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::B > valid_keywords;
+
+    // uniform high-level dispatching-function
+    template< typename MatrixA, typename MatrixB, typename VectorP >
+    static void solve( MatrixA& A, MatrixB& B, VectorP& pivot,
+            integer_t& info ) {
+        invoke( B, info );
+    }
 
     // templated specialization
     template< typename VectorD, typename VectorE, typename MatrixB >
-    static void compute( integer_t const n, VectorD& d, VectorE& e,
-            MatrixB& b, integer_t& info ) {
+    static void invoke( integer_t const n, VectorD& d, VectorE& e, MatrixB& b,
+            integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
                 VectorE >::value_type, typename traits::matrix_traits<
                 MatrixB >::value_type >::value) );
@@ -125,7 +135,7 @@
         MatrixB& b ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    ptsv_impl< value_type >::compute( n, d, e, b, info );
+    ptsv_impl< value_type >::invoke( n, d, e, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ptsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ptsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/ptsvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_PTSVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -87,13 +85,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename VectorDF,
             typename VectorEF, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR, typename WORK >
-    static void compute( char const fact, integer_t const n, VectorD& d,
+    static void invoke( char const fact, integer_t const n, VectorD& d,
             VectorE& e, VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, detail::workspace1< WORK > work ) {
@@ -143,12 +141,12 @@
     template< typename VectorD, typename VectorE, typename VectorDF,
             typename VectorEF, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, integer_t const n, VectorD& d,
+    static void invoke( char const fact, integer_t const n, VectorD& d,
             VectorE& e, VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( fact, n, d, e, df, ef, b, x, rcond, ferr, berr, info,
+        invoke( fact, n, d, e, df, ef, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work ) );
     }
 
@@ -156,11 +154,11 @@
     template< typename VectorD, typename VectorE, typename VectorDF,
             typename VectorEF, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, integer_t const n, VectorD& d,
+    static void invoke( char const fact, integer_t const n, VectorD& d,
             VectorE& e, VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, optimal_workspace work ) {
-        compute( fact, n, d, e, df, ef, b, x, rcond, ferr, berr, info,
+        invoke( fact, n, d, e, df, ef, b, x, rcond, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -175,14 +173,14 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename VectorDF,
             typename VectorEF, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR, typename WORK,
             typename RWORK >
-    static void compute( char const fact, integer_t const n, VectorD& d,
+    static void invoke( char const fact, integer_t const n, VectorD& d,
             VectorE& e, VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, detail::workspace2< WORK, RWORK > work ) {
@@ -232,13 +230,13 @@
     template< typename VectorD, typename VectorE, typename VectorDF,
             typename VectorEF, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, integer_t const n, VectorD& d,
+    static void invoke( char const fact, integer_t const n, VectorD& d,
             VectorE& e, VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work( n ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork( n ) );
-        compute( fact, n, d, e, df, ef, b, x, rcond, ferr, berr, info,
+        invoke( fact, n, d, e, df, ef, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -246,11 +244,11 @@
     template< typename VectorD, typename VectorE, typename VectorDF,
             typename VectorEF, typename MatrixB, typename MatrixX,
             typename VectorFERR, typename VectorBERR >
-    static void compute( char const fact, integer_t const n, VectorD& d,
+    static void invoke( char const fact, integer_t const n, VectorD& d,
             VectorE& e, VectorDF& df, VectorEF& ef, MatrixB& b, MatrixX& x,
             real_type& rcond, VectorFERR& ferr, VectorBERR& berr,
             integer_t& info, optimal_workspace work ) {
-        compute( fact, n, d, e, df, ef, b, x, rcond, ferr, berr, info,
+        invoke( fact, n, d, e, df, ef, b, x, rcond, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -274,8 +272,8 @@
         VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    ptsvx_impl< value_type >::compute( fact, n, d, e, df, ef, b, x,
-            rcond, ferr, berr, info, work );
+    ptsvx_impl< value_type >::invoke( fact, n, d, e, df, ef, b, x, rcond,
+            ferr, berr, info, work );
     return info;
 }
 
@@ -289,8 +287,8 @@
         VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    ptsvx_impl< value_type >::compute( fact, n, d, e, df, ef, b, x,
-            rcond, ferr, berr, info, optimal_workspace() );
+    ptsvx_impl< value_type >::invoke( fact, n, d, e, df, ef, b, x, rcond,
+            ferr, berr, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbev.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbev.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SBEV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -54,12 +52,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename VectorW, typename MatrixZ,
             typename WORK >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -85,19 +83,19 @@
 
     // minimal workspace specialization
     template< typename MatrixAB, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( jobz, n, kd, ab, w, z, info, workspace( tmp_work ) );
+        invoke( jobz, n, kd, ab, w, z, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z,
             integer_t& info, optimal_workspace work ) {
-        compute( jobz, n, kd, ab, w, z, info, minimal_workspace() );
+        invoke( jobz, n, kd, ab, w, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -114,8 +112,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbev_impl< value_type >::compute( jobz, n, kd, ab, w, z, info,
-            work );
+    sbev_impl< value_type >::invoke( jobz, n, kd, ab, w, z, info, work );
     return info;
 }
 
@@ -125,7 +122,7 @@
         integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbev_impl< value_type >::compute( jobz, n, kd, ab, w, z, info,
+    sbev_impl< value_type >::invoke( jobz, n, kd, ab, w, z, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SBEVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -58,12 +56,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename VectorW, typename MatrixZ,
             typename WORK, typename IWORK >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z,
             integer_t const liwork, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
@@ -95,20 +93,20 @@
 
     // minimal workspace specialization
     template< typename MatrixAB, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z,
             integer_t const liwork, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( jobz,
                 n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
                 n ) );
-        compute( jobz, n, kd, ab, w, z, liwork, info, workspace( tmp_work,
+        invoke( jobz, n, kd, ab, w, z, liwork, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const kd, MatrixAB& ab, VectorW& w, MatrixZ& z,
             integer_t const liwork, integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
@@ -121,7 +119,7 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, n, kd, ab, w, z, liwork, info, workspace( tmp_work,
+        invoke( jobz, n, kd, ab, w, z, liwork, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
@@ -153,7 +151,7 @@
         integer_t const liwork, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbevd_impl< value_type >::compute( jobz, n, kd, ab, w, z, liwork,
+    sbevd_impl< value_type >::invoke( jobz, n, kd, ab, w, z, liwork,
             info, work );
     return info;
 }
@@ -165,7 +163,7 @@
         integer_t const liwork ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbevd_impl< value_type >::compute( jobz, n, kd, ab, w, z, liwork,
+    sbevd_impl< value_type >::invoke( jobz, n, kd, ab, w, z, liwork,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbevx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SBEVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -64,13 +62,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixQ, typename VectorW,
             typename MatrixZ, typename VectorIFAIL, typename WORK,
             typename IWORK >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             integer_t const kd, MatrixAB& ab, MatrixQ& q, real_type const vl,
             real_type const vu, integer_t const il, integer_t const iu,
             real_type const abstol, integer_t& m, VectorW& w, MatrixZ& z,
@@ -111,26 +109,26 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixQ, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             integer_t const kd, MatrixAB& ab, MatrixQ& q, real_type const vl,
             real_type const vu, integer_t const il, integer_t const iu,
             real_type const abstol, integer_t& m, VectorW& w, MatrixZ& z,
             VectorIFAIL& ifail, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( jobz, range, n, kd, ab, q, vl, vu, il, iu, abstol, m, w, z,
+        invoke( jobz, range, n, kd, ab, q, vl, vu, il, iu, abstol, m, w, z,
                 ifail, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixQ, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             integer_t const kd, MatrixAB& ab, MatrixQ& q, real_type const vl,
             real_type const vu, integer_t const il, integer_t const iu,
             real_type const abstol, integer_t& m, VectorW& w, MatrixZ& z,
             VectorIFAIL& ifail, integer_t& info, optimal_workspace work ) {
-        compute( jobz, range, n, kd, ab, q, vl, vu, il, iu, abstol, m, w, z,
+        invoke( jobz, range, n, kd, ab, q, vl, vu, il, iu, abstol, m, w, z,
                 ifail, info, minimal_workspace() );
     }
 
@@ -157,7 +155,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbevx_impl< value_type >::compute( jobz, range, n, kd, ab, q, vl, vu,
+    sbevx_impl< value_type >::invoke( jobz, range, n, kd, ab, q, vl, vu,
             il, iu, abstol, m, w, z, ifail, info, work );
     return info;
 }
@@ -174,7 +172,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbevx_impl< value_type >::compute( jobz, range, n, kd, ab, q, vl, vu,
+    sbevx_impl< value_type >::invoke( jobz, range, n, kd, ab, q, vl, vu,
             il, iu, abstol, m, w, z, ifail, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SBGV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -56,13 +54,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename VectorW,
             typename MatrixZ, typename WORK >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, VectorW& w, MatrixZ& z, integer_t& info,
             detail::workspace1< WORK > work ) {
@@ -96,22 +93,22 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename VectorW,
             typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, VectorW& w, MatrixZ& z, integer_t& info,
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( jobz, n, ka, kb, ab, bb, w, z, info, workspace( tmp_work ) );
+        invoke( jobz, n, ka, kb, ab, bb, w, z, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename VectorW,
             typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, VectorW& w, MatrixZ& z, integer_t& info,
             optimal_workspace work ) {
-        compute( jobz, n, ka, kb, ab, bb, w, z, info, minimal_workspace() );
+        invoke( jobz, n, ka, kb, ab, bb, w, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -128,7 +125,7 @@
         VectorW& w, MatrixZ& z, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbgv_impl< value_type >::compute( jobz, n, ka, kb, ab, bb, w, z,
+    sbgv_impl< value_type >::invoke( jobz, n, ka, kb, ab, bb, w, z,
             info, work );
     return info;
 }
@@ -141,7 +138,7 @@
         VectorW& w, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbgv_impl< value_type >::compute( jobz, n, ka, kb, ab, bb, w, z,
+    sbgv_impl< value_type >::invoke( jobz, n, ka, kb, ab, bb, w, z,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SBGVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -60,13 +58,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename VectorW,
             typename MatrixZ, typename WORK, typename IWORK >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, VectorW& w, MatrixZ& z, integer_t& info,
             detail::workspace2< WORK, IWORK > work ) {
@@ -105,7 +102,7 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename VectorW,
             typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, VectorW& w, MatrixZ& z, integer_t& info,
             minimal_workspace work ) {
@@ -113,14 +110,14 @@
                 n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
                 n ) );
-        compute( jobz, n, ka, kb, ab, bb, w, z, info, workspace( tmp_work,
+        invoke( jobz, n, ka, kb, ab, bb, w, z, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename VectorW,
             typename MatrixZ >
-    static void compute( char const jobz, integer_t const n,
+    static void invoke( char const jobz, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, VectorW& w, MatrixZ& z, integer_t& info,
             optimal_workspace work ) {
@@ -135,7 +132,7 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, n, ka, kb, ab, bb, w, z, info, workspace( tmp_work,
+        invoke( jobz, n, ka, kb, ab, bb, w, z, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
@@ -167,7 +164,7 @@
         VectorW& w, MatrixZ& z, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbgvd_impl< value_type >::compute( jobz, n, ka, kb, ab, bb, w, z,
+    sbgvd_impl< value_type >::invoke( jobz, n, ka, kb, ab, bb, w, z,
             info, work );
     return info;
 }
@@ -180,7 +177,7 @@
         VectorW& w, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbgvd_impl< value_type >::compute( jobz, n, ka, kb, ab, bb, w, z,
+    sbgvd_impl< value_type >::invoke( jobz, n, ka, kb, ab, bb, w, z,
             info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sbgvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SBGVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -66,14 +64,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename MatrixQ,
             typename VectorW, typename MatrixZ, typename VectorIFAIL,
             typename WORK, typename IWORK >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, MatrixQ& q, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
@@ -118,7 +115,7 @@
     // minimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename MatrixQ,
             typename VectorW, typename MatrixZ, typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, MatrixQ& q, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
@@ -126,20 +123,20 @@
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( jobz, range, n, ka, kb, ab, bb, q, vl, vu, il, iu, abstol, m,
+        invoke( jobz, range, n, ka, kb, ab, bb, q, vl, vu, il, iu, abstol, m,
                 w, z, ifail, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAB, typename MatrixBB, typename MatrixQ,
             typename VectorW, typename MatrixZ, typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             integer_t const ka, integer_t const kb, MatrixAB& ab,
             MatrixBB& bb, MatrixQ& q, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             integer_t& info, optimal_workspace work ) {
-        compute( jobz, range, n, ka, kb, ab, bb, q, vl, vu, il, iu, abstol, m,
+        invoke( jobz, range, n, ka, kb, ab, bb, q, vl, vu, il, iu, abstol, m,
                 w, z, ifail, info, minimal_workspace() );
     }
 
@@ -168,7 +165,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbgvx_impl< value_type >::compute( jobz, range, n, ka, kb, ab, bb, q,
+    sbgvx_impl< value_type >::invoke( jobz, range, n, ka, kb, ab, bb, q,
             vl, vu, il, iu, abstol, m, w, z, ifail, info, work );
     return info;
 }
@@ -186,7 +183,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAB >::value_type value_type;
     integer_t info(0);
-    sbgvx_impl< value_type >::compute( jobz, range, n, ka, kb, ab, bb, q,
+    sbgvx_impl< value_type >::invoke( jobz, range, n, ka, kb, ab, bb, q,
             vl, vu, il, iu, abstol, m, w, z, ifail, info,
             optimal_workspace() );
     return info;
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sgesv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sgesv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sgesv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SGESV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -49,13 +47,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB,
             typename MatrixX, typename WORK, typename SWORK >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             integer_t& iter, integer_t& info, detail::workspace2< WORK,
             SWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -91,22 +88,22 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB,
             typename MatrixX >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             integer_t& iter, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 $CALL_MIN_SIZE ) );
         traits::detail::array< real_type > tmp_swork( min_size_swork(
                 traits::matrix_num_columns(a),
                 traits::matrix_num_columns(b) ) );
-        compute( a, ipiv, b, x, iter, info, workspace( tmp_work, tmp_swork ) );
+        invoke( a, ipiv, b, x, iter, info, workspace( tmp_work, tmp_swork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB,
             typename MatrixX >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b, MatrixX& x,
             integer_t& iter, integer_t& info, optimal_workspace work ) {
-        compute( a, ipiv, b, x, iter, info, minimal_workspace() );
+        invoke( a, ipiv, b, x, iter, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( $ARGUMENTS ) {
@@ -127,7 +124,7 @@
         MatrixX& x, integer_t& iter, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sgesv_impl< value_type >::compute( a, ipiv, b, x, iter, info, work );
+    sgesv_impl< value_type >::invoke( a, ipiv, b, x, iter, info, work );
     return info;
 }
 
@@ -138,7 +135,7 @@
         MatrixX& x, integer_t& iter ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sgesv_impl< value_type >::compute( a, ipiv, b, x, iter, info,
+    sgesv_impl< value_type >::invoke( a, ipiv, b, x, iter, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spev.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spev.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SPEV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -52,12 +50,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ,
             typename WORK >
-    static void compute( char const jobz, integer_t const n, MatrixAP& ap,
+    static void invoke( char const jobz, integer_t const n, MatrixAP& ap,
             VectorW& w, MatrixZ& z, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -80,17 +78,17 @@
 
     // minimal workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n, MatrixAP& ap,
+    static void invoke( char const jobz, integer_t const n, MatrixAP& ap,
             VectorW& w, MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( jobz, n, ap, w, z, info, workspace( tmp_work ) );
+        invoke( jobz, n, ap, w, z, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n, MatrixAP& ap,
+    static void invoke( char const jobz, integer_t const n, MatrixAP& ap,
             VectorW& w, MatrixZ& z, integer_t& info, optimal_workspace work ) {
-        compute( jobz, n, ap, w, z, info, minimal_workspace() );
+        invoke( jobz, n, ap, w, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -106,7 +104,7 @@
         VectorW& w, MatrixZ& z, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spev_impl< value_type >::compute( jobz, n, ap, w, z, info, work );
+    spev_impl< value_type >::invoke( jobz, n, ap, w, z, info, work );
     return info;
 }
 
@@ -116,7 +114,7 @@
         VectorW& w, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spev_impl< value_type >::compute( jobz, n, ap, w, z, info,
+    spev_impl< value_type >::invoke( jobz, n, ap, w, z, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SPEVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -57,12 +55,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ,
             typename WORK, typename IWORK >
-    static void compute( char const jobz, integer_t const n, MatrixAP& ap,
+    static void invoke( char const jobz, integer_t const n, MatrixAP& ap,
             VectorW& w, MatrixZ& z, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -90,18 +88,18 @@
 
     // minimal workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n, MatrixAP& ap,
+    static void invoke( char const jobz, integer_t const n, MatrixAP& ap,
             VectorW& w, MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( jobz,
                 n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
                 n ) );
-        compute( jobz, n, ap, w, z, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, n, ap, w, z, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n, MatrixAP& ap,
+    static void invoke( char const jobz, integer_t const n, MatrixAP& ap,
             VectorW& w, MatrixZ& z, integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         integer_t opt_size_iwork;
@@ -112,7 +110,7 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, n, ap, w, z, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, n, ap, w, z, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     static integer_t min_size_work( char const jobz, integer_t const n ) {
@@ -142,7 +140,7 @@
         VectorW& w, MatrixZ& z, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spevd_impl< value_type >::compute( jobz, n, ap, w, z, info, work );
+    spevd_impl< value_type >::invoke( jobz, n, ap, w, z, info, work );
     return info;
 }
 
@@ -152,7 +150,7 @@
         VectorW& w, MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spevd_impl< value_type >::compute( jobz, n, ap, w, z, info,
+    spevd_impl< value_type >::invoke( jobz, n, ap, w, z, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spevx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SPEVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -60,12 +58,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ,
             typename VectorIFAIL, typename WORK, typename IWORK >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             MatrixAP& ap, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
@@ -97,26 +95,26 @@
     // minimal workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ,
             typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             MatrixAP& ap, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( jobz, range, n, ap, vl, vu, il, iu, abstol, m, w, z, ifail,
+        invoke( jobz, range, n, ap, vl, vu, il, iu, abstol, m, w, z, ifail,
                 info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename VectorW, typename MatrixZ,
             typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             MatrixAP& ap, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             integer_t& info, optimal_workspace work ) {
-        compute( jobz, range, n, ap, vl, vu, il, iu, abstol, m, w, z, ifail,
+        invoke( jobz, range, n, ap, vl, vu, il, iu, abstol, m, w, z, ifail,
                 info, minimal_workspace() );
     }
 
@@ -142,8 +140,8 @@
         MatrixZ& z, VectorIFAIL& ifail, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spevx_impl< value_type >::compute( jobz, range, n, ap, vl, vu, il,
-            iu, abstol, m, w, z, ifail, info, work );
+    spevx_impl< value_type >::invoke( jobz, range, n, ap, vl, vu, il, iu,
+            abstol, m, w, z, ifail, info, work );
     return info;
 }
 
@@ -159,8 +157,8 @@
         MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spevx_impl< value_type >::compute( jobz, range, n, ap, vl, vu, il,
-            iu, abstol, m, w, z, ifail, info, optimal_workspace() );
+    spevx_impl< value_type >::invoke( jobz, range, n, ap, vl, vu, il, iu,
+            abstol, m, w, z, ifail, info, optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SPGV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -54,13 +52,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ, typename WORK >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -88,20 +85,20 @@
     // minimal workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( itype, jobz, n, ap, bp, w, z, info, workspace( tmp_work ) );
+        invoke( itype, jobz, n, ap, bp, w, z, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, integer_t& info, optimal_workspace work ) {
-        compute( itype, jobz, n, ap, bp, w, z, info, minimal_workspace() );
+        invoke( itype, jobz, n, ap, bp, w, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -118,8 +115,8 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spgv_impl< value_type >::compute( itype, jobz, n, ap, bp, w, z,
-            info, work );
+    spgv_impl< value_type >::invoke( itype, jobz, n, ap, bp, w, z, info,
+            work );
     return info;
 }
 
@@ -131,8 +128,8 @@
         MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spgv_impl< value_type >::compute( itype, jobz, n, ap, bp, w, z,
-            info, optimal_workspace() );
+    spgv_impl< value_type >::invoke( itype, jobz, n, ap, bp, w, z, info,
+            optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SPGVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -59,13 +57,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ, typename WORK, typename IWORK >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
@@ -99,21 +96,21 @@
     // minimal workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( jobz,
                 n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
                 n ) );
-        compute( itype, jobz, n, ap, bp, w, z, info, workspace( tmp_work,
+        invoke( itype, jobz, n, ap, bp, w, z, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixAP& ap, MatrixBP& bp, VectorW& w,
             MatrixZ& z, integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
@@ -126,7 +123,7 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( itype, jobz, n, ap, bp, w, z, info, workspace( tmp_work,
+        invoke( itype, jobz, n, ap, bp, w, z, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
@@ -158,8 +155,8 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spgvd_impl< value_type >::compute( itype, jobz, n, ap, bp, w, z,
-            info, work );
+    spgvd_impl< value_type >::invoke( itype, jobz, n, ap, bp, w, z, info,
+            work );
     return info;
 }
 
@@ -171,8 +168,8 @@
         MatrixZ& z ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spgvd_impl< value_type >::compute( itype, jobz, n, ap, bp, w, z,
-            info, optimal_workspace() );
+    spgvd_impl< value_type >::invoke( itype, jobz, n, ap, bp, w, z, info,
+            optimal_workspace() );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spgvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SPGVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -60,14 +58,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ, typename VectorIFAIL, typename WORK,
             typename IWORK >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             char const range, integer_t const n, MatrixAP& ap, MatrixBP& bp,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
@@ -104,7 +101,7 @@
     // minimal workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             char const range, integer_t const n, MatrixAP& ap, MatrixBP& bp,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
@@ -112,20 +109,20 @@
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( itype, jobz, range, n, ap, bp, vl, vu, il, iu, abstol, m, w,
+        invoke( itype, jobz, range, n, ap, bp, vl, vu, il, iu, abstol, m, w,
                 z, ifail, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixAP, typename MatrixBP, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             char const range, integer_t const n, MatrixAP& ap, MatrixBP& bp,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorIFAIL& ifail, integer_t& info,
             optimal_workspace work ) {
-        compute( itype, jobz, range, n, ap, bp, vl, vu, il, iu, abstol, m, w,
+        invoke( itype, jobz, range, n, ap, bp, vl, vu, il, iu, abstol, m, w,
                 z, ifail, info, minimal_workspace() );
     }
 
@@ -152,7 +149,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spgvx_impl< value_type >::compute( itype, jobz, range, n, ap, bp, vl,
+    spgvx_impl< value_type >::invoke( itype, jobz, range, n, ap, bp, vl,
             vu, il, iu, abstol, m, w, z, ifail, info, work );
     return info;
 }
@@ -169,7 +166,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spgvx_impl< value_type >::compute( itype, jobz, range, n, ap, bp, vl,
+    spgvx_impl< value_type >::invoke( itype, jobz, range, n, ap, bp, vl,
             vu, il, iu, abstol, m, w, z, ifail, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SPSV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
 #include <boost/numeric/bindings/traits/type_traits.hpp>
 #include <boost/static_assert.hpp>
@@ -62,12 +60,17 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
+
+    // uniform high-level dispatching-function
+    template< typename MatrixA, typename MatrixB, typename VectorP >
+    static void solve( MatrixA& A, MatrixB& B, VectorP& pivot,
+            integer_t& info ) {
+        invoke( A, pivot, B, info );
+    }
 
     // templated specialization
     template< typename MatrixAP, typename VectorIPIV, typename MatrixB >
-    static void compute( MatrixAP& ap, VectorIPIV& ipiv, MatrixB& b,
+    static void invoke( MatrixAP& ap, VectorIPIV& ipiv, MatrixB& b,
             integer_t& info ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixAP >::value_type, typename traits::matrix_traits<
@@ -92,7 +95,7 @@
 inline integer_t spsv( MatrixAP& ap, VectorIPIV& ipiv, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spsv_impl< value_type >::compute( ap, ipiv, b, info );
+    spsv_impl< value_type >::invoke( ap, ipiv, b, info );
     return info;
 }
 
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/spsvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SPSVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/is_complex.hpp>
@@ -87,14 +85,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename IWORK >
-    static void compute( char const fact, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( char const fact, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, IWORK > work ) {
@@ -143,7 +140,7 @@
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( char const fact, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
@@ -151,7 +148,7 @@
                 traits::matrix_num_columns(ap) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(ap) ) );
-        compute( fact, ap, afp, ipiv, b, x, rcond, ferr, berr, info,
+        invoke( fact, ap, afp, ipiv, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -159,11 +156,11 @@
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( char const fact, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( fact, ap, afp, ipiv, b, x, rcond, ferr, berr, info,
+        invoke( fact, ap, afp, ipiv, b, x, rcond, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -182,14 +179,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename RWORK >
-    static void compute( char const fact, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( char const fact, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
@@ -235,7 +231,7 @@
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( char const fact, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
@@ -243,7 +239,7 @@
                 traits::matrix_num_columns(ap) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(ap) ) );
-        compute( fact, ap, afp, ipiv, b, x, rcond, ferr, berr, info,
+        invoke( fact, ap, afp, ipiv, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -251,11 +247,11 @@
     template< typename MatrixAP, typename MatrixAFP, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixAP& ap, MatrixAFP& afp,
+    static void invoke( char const fact, MatrixAP& ap, MatrixAFP& afp,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
-        compute( fact, ap, afp, ipiv, b, x, rcond, ferr, berr, info,
+        invoke( fact, ap, afp, ipiv, b, x, rcond, ferr, berr, info,
                 minimal_workspace() );
     }
 
@@ -279,7 +275,7 @@
         VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spsvx_impl< value_type >::compute( fact, ap, afp, ipiv, b, x, rcond,
+    spsvx_impl< value_type >::invoke( fact, ap, afp, ipiv, b, x, rcond,
             ferr, berr, info, work );
     return info;
 }
@@ -294,7 +290,7 @@
         VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixAP >::value_type value_type;
     integer_t info(0);
-    spsvx_impl< value_type >::compute( fact, ap, afp, ipiv, b, x, rcond,
+    spsvx_impl< value_type >::invoke( fact, ap, afp, ipiv, b, x, rcond,
             ferr, berr, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stev.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stev.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_STEV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -51,12 +49,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ,
             typename WORK >
-    static void compute( char const jobz, integer_t const n, VectorD& d,
+    static void invoke( char const jobz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, detail::workspace1<
             WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -78,17 +76,17 @@
 
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n, VectorD& d,
+    static void invoke( char const jobz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( jobz, n, d, e, z, info, workspace( tmp_work ) );
+        invoke( jobz, n, d, e, z, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n, VectorD& d,
+    static void invoke( char const jobz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, optimal_workspace work ) {
-        compute( jobz, n, d, e, z, info, minimal_workspace() );
+        invoke( jobz, n, d, e, z, info, minimal_workspace() );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -104,7 +102,7 @@
         VectorE& e, MatrixZ& z, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stev_impl< value_type >::compute( jobz, n, d, e, z, info, work );
+    stev_impl< value_type >::invoke( jobz, n, d, e, z, info, work );
     return info;
 }
 
@@ -114,7 +112,7 @@
         VectorE& e, MatrixZ& z ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stev_impl< value_type >::compute( jobz, n, d, e, z, info,
+    stev_impl< value_type >::invoke( jobz, n, d, e, z, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_STEVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -56,12 +54,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ,
             typename WORK, typename IWORK >
-    static void compute( char const jobz, integer_t const n, VectorD& d,
+    static void invoke( char const jobz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, detail::workspace2< WORK,
             IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::vector_traits<
@@ -88,18 +86,18 @@
 
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n, VectorD& d,
+    static void invoke( char const jobz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( jobz,
                 n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
                 n ) );
-        compute( jobz, n, d, e, z, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, n, d, e, z, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename MatrixZ >
-    static void compute( char const jobz, integer_t const n, VectorD& d,
+    static void invoke( char const jobz, integer_t const n, VectorD& d,
             VectorE& e, MatrixZ& z, integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         integer_t opt_size_iwork;
@@ -110,7 +108,7 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, n, d, e, z, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, n, d, e, z, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     static integer_t min_size_work( char const jobz, integer_t const n ) {
@@ -136,7 +134,7 @@
         VectorE& e, MatrixZ& z, Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stevd_impl< value_type >::compute( jobz, n, d, e, z, info, work );
+    stevd_impl< value_type >::invoke( jobz, n, d, e, z, info, work );
     return info;
 }
 
@@ -146,7 +144,7 @@
         VectorE& e, MatrixZ& z ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stevd_impl< value_type >::compute( jobz, n, d, e, z, info,
+    stevd_impl< value_type >::invoke( jobz, n, d, e, z, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_STEVR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -61,13 +59,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename MatrixZ, typename VectorISUPPZ, typename WORK,
             typename IWORK >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             VectorD& d, VectorE& e, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz,
@@ -105,21 +103,21 @@
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename MatrixZ, typename VectorISUPPZ >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             VectorD& d, VectorE& e, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z,
-                isuppz, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, isuppz,
+                info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename MatrixZ, typename VectorISUPPZ >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             VectorD& d, VectorE& e, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz,
@@ -134,8 +132,8 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z,
-                isuppz, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, isuppz,
+                info, workspace( tmp_work, tmp_iwork ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -161,7 +159,7 @@
         Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stevr_impl< value_type >::compute( jobz, range, n, d, e, vl, vu, il,
+    stevr_impl< value_type >::invoke( jobz, range, n, d, e, vl, vu, il,
             iu, abstol, m, w, z, isuppz, info, work );
     return info;
 }
@@ -178,7 +176,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stevr_impl< value_type >::compute( jobz, range, n, d, e, vl, vu, il,
+    stevr_impl< value_type >::invoke( jobz, range, n, d, e, vl, vu, il,
             iu, abstol, m, w, z, isuppz, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/stevx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_STEVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/traits.hpp>
@@ -60,13 +58,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector<  > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename MatrixZ, typename VectorIFAIL, typename WORK,
             typename IWORK >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             VectorD& d, VectorE& e, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
@@ -102,26 +100,26 @@
     // minimal workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             VectorD& d, VectorE& e, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, ifail,
+        invoke( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, ifail,
                 info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename VectorD, typename VectorE, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( char const jobz, char const range, integer_t const n,
+    static void invoke( char const jobz, char const range, integer_t const n,
             VectorD& d, VectorE& e, real_type const vl, real_type const vu,
             integer_t const il, integer_t const iu, real_type const abstol,
             integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail,
             integer_t& info, optimal_workspace work ) {
-        compute( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, ifail,
+        invoke( jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, ifail,
                 info, minimal_workspace() );
     }
 
@@ -148,7 +146,7 @@
         Workspace work ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stevx_impl< value_type >::compute( jobz, range, n, d, e, vl, vu, il,
+    stevx_impl< value_type >::invoke( jobz, range, n, d, e, vl, vu, il,
             iu, abstol, m, w, z, ifail, info, work );
     return info;
 }
@@ -165,7 +163,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::vector_traits< VectorD >::value_type value_type;
     integer_t info(0);
-    stevx_impl< value_type >::compute( jobz, range, n, d, e, vl, vu, il,
+    stevx_impl< value_type >::invoke( jobz, range, n, d, e, vl, vu, il,
             iu, abstol, m, w, z, ifail, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syev.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syev.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syev.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SYEV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -53,11 +51,11 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorW, typename WORK >
-    static void compute( char const jobz, MatrixA& a, VectorW& w,
+    static void invoke( char const jobz, MatrixA& a, VectorW& w,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -79,16 +77,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorW >
-    static void compute( char const jobz, MatrixA& a, VectorW& w,
+    static void invoke( char const jobz, MatrixA& a, VectorW& w,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(
                 traits::matrix_num_columns(a) ) );
-        compute( jobz, a, w, info, workspace( tmp_work ) );
+        invoke( jobz, a, w, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorW >
-    static void compute( char const jobz, MatrixA& a, VectorW& w,
+    static void invoke( char const jobz, MatrixA& a, VectorW& w,
             integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         detail::syev( jobz, traits::matrix_uplo_tag(a),
@@ -97,7 +95,7 @@
                 &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobz, a, w, info, workspace( tmp_work ) );
+        invoke( jobz, a, w, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -112,7 +110,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    syev_impl< value_type >::compute( jobz, a, w, info, work );
+    syev_impl< value_type >::invoke( jobz, a, w, info, work );
     return info;
 }
 
@@ -121,7 +119,7 @@
 inline integer_t syev( char const jobz, MatrixA& a, VectorW& w ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    syev_impl< value_type >::compute( jobz, a, w, info,
+    syev_impl< value_type >::invoke( jobz, a, w, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SYEVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -57,12 +55,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorW, typename WORK,
             typename IWORK >
-    static void compute( char const jobz, MatrixA& a, VectorW& w,
+    static void invoke( char const jobz, MatrixA& a, VectorW& w,
             integer_t& info, detail::workspace2< WORK, IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::vector_traits<
@@ -88,18 +86,18 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorW >
-    static void compute( char const jobz, MatrixA& a, VectorW& w,
+    static void invoke( char const jobz, MatrixA& a, VectorW& w,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( jobz,
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
                 traits::matrix_num_columns(a) ) );
-        compute( jobz, a, w, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, a, w, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorW >
-    static void compute( char const jobz, MatrixA& a, VectorW& w,
+    static void invoke( char const jobz, MatrixA& a, VectorW& w,
             integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         integer_t opt_size_iwork;
@@ -110,7 +108,7 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, a, w, info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, a, w, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     static integer_t min_size_work( char const jobz, integer_t const n ) {
@@ -139,7 +137,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    syevd_impl< value_type >::compute( jobz, a, w, info, work );
+    syevd_impl< value_type >::invoke( jobz, a, w, info, work );
     return info;
 }
 
@@ -148,7 +146,7 @@
 inline integer_t syevd( char const jobz, MatrixA& a, VectorW& w ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    syevd_impl< value_type >::compute( jobz, a, w, info,
+    syevd_impl< value_type >::invoke( jobz, a, w, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevr.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SYEVR_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -65,12 +63,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixZ,
             typename VectorISUPPZ, typename WORK, typename IWORK >
-    static void compute( char const jobz, char const range, MatrixA& a,
+    static void invoke( char const jobz, char const range, MatrixA& a,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz, integer_t& info,
@@ -109,7 +107,7 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixZ,
             typename VectorISUPPZ >
-    static void compute( char const jobz, char const range, MatrixA& a,
+    static void invoke( char const jobz, char const range, MatrixA& a,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz, integer_t& info,
@@ -118,14 +116,14 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, isuppz,
-                info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, isuppz, info,
+                workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixZ,
             typename VectorISUPPZ >
-    static void compute( char const jobz, char const range, MatrixA& a,
+    static void invoke( char const jobz, char const range, MatrixA& a,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz, integer_t& info,
@@ -141,8 +139,8 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, isuppz,
-                info, workspace( tmp_work, tmp_iwork ) );
+        invoke( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, isuppz, info,
+                workspace( tmp_work, tmp_iwork ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -167,7 +165,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    syevr_impl< value_type >::compute( jobz, range, a, vl, vu, il, iu,
+    syevr_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
             abstol, m, w, z, isuppz, info, work );
     return info;
 }
@@ -183,7 +181,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorISUPPZ& isuppz ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    syevr_impl< value_type >::compute( jobz, range, a, vl, vu, il, iu,
+    syevr_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
             abstol, m, w, z, isuppz, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/syevx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SYEVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -62,12 +60,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixZ,
             typename VectorIFAIL, typename WORK, typename IWORK >
-    static void compute( char const jobz, char const range, MatrixA& a,
+    static void invoke( char const jobz, char const range, MatrixA& a,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorIFAIL& ifail, integer_t& info,
@@ -105,7 +103,7 @@
     // minimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixZ,
             typename VectorIFAIL >
-    static void compute( char const jobz, char const range, MatrixA& a,
+    static void invoke( char const jobz, char const range, MatrixA& a,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorIFAIL& ifail, integer_t& info,
@@ -114,14 +112,14 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, ifail, info,
+        invoke( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, ifail, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorW, typename MatrixZ,
             typename VectorIFAIL >
-    static void compute( char const jobz, char const range, MatrixA& a,
+    static void invoke( char const jobz, char const range, MatrixA& a,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
             VectorW& w, MatrixZ& z, VectorIFAIL& ifail, integer_t& info,
@@ -138,7 +136,7 @@
                 traits::vector_storage(ifail), info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, ifail, info,
+        invoke( jobz, range, a, vl, vu, il, iu, abstol, m, w, z, ifail, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -167,7 +165,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    syevx_impl< value_type >::compute( jobz, range, a, vl, vu, il, iu,
+    syevx_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
             abstol, m, w, z, ifail, info, work );
     return info;
 }
@@ -183,7 +181,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    syevx_impl< value_type >::compute( jobz, range, a, vl, vu, il, iu,
+    syevx_impl< value_type >::invoke( jobz, range, a, vl, vu, il, iu,
             abstol, m, w, z, ifail, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SYGV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -57,13 +55,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW,
             typename WORK >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -90,16 +87,16 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
-        compute( itype, jobz, n, a, b, w, info, workspace( tmp_work ) );
+        invoke( itype, jobz, n, a, b, w, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
             integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
@@ -109,7 +106,7 @@
                 traits::vector_storage(w), &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( itype, jobz, n, a, b, w, info, workspace( tmp_work ) );
+        invoke( itype, jobz, n, a, b, w, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work( integer_t const n ) {
@@ -126,7 +123,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sygv_impl< value_type >::compute( itype, jobz, n, a, b, w, info,
+    sygv_impl< value_type >::invoke( itype, jobz, n, a, b, w, info,
             work );
     return info;
 }
@@ -137,7 +134,7 @@
         integer_t const n, MatrixA& a, MatrixB& b, VectorW& w ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sygv_impl< value_type >::compute( itype, jobz, n, a, b, w, info,
+    sygv_impl< value_type >::invoke( itype, jobz, n, a, b, w, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvd.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvd.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvd.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SYGVD_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -59,13 +57,12 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW,
             typename WORK, typename IWORK >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
             integer_t& info, detail::workspace2< WORK, IWORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
@@ -96,20 +93,20 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( jobz,
                 n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( jobz,
                 n ) );
-        compute( itype, jobz, n, a, b, w, info, workspace( tmp_work,
+        invoke( itype, jobz, n, a, b, w, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             integer_t const n, MatrixA& a, MatrixB& b, VectorW& w,
             integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
@@ -122,7 +119,7 @@
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
         traits::detail::array< integer_t > tmp_iwork( opt_size_iwork );
-        compute( itype, jobz, n, a, b, w, info, workspace( tmp_work,
+        invoke( itype, jobz, n, a, b, w, info, workspace( tmp_work,
                 tmp_iwork ) );
     }
 
@@ -154,7 +151,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sygvd_impl< value_type >::compute( itype, jobz, n, a, b, w, info,
+    sygvd_impl< value_type >::invoke( itype, jobz, n, a, b, w, info,
             work );
     return info;
 }
@@ -165,7 +162,7 @@
         integer_t const n, MatrixA& a, MatrixB& b, VectorW& w ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sygvd_impl< value_type >::compute( itype, jobz, n, a, b, w, info,
+    sygvd_impl< value_type >::invoke( itype, jobz, n, a, b, w, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sygvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SYGVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -66,14 +64,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW,
             typename MatrixZ, typename VectorIFAIL, typename WORK,
             typename IWORK >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             char const range, integer_t const n, MatrixA& a, MatrixB& b,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
@@ -114,7 +111,7 @@
     // minimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             char const range, integer_t const n, MatrixA& a, MatrixB& b,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
@@ -122,14 +119,14 @@
             minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work( n ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork( n ) );
-        compute( itype, jobz, range, n, a, b, vl, vu, il, iu, abstol, m, w, z,
+        invoke( itype, jobz, range, n, a, b, vl, vu, il, iu, abstol, m, w, z,
                 ifail, info, workspace( tmp_work, tmp_iwork ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename MatrixB, typename VectorW,
             typename MatrixZ, typename VectorIFAIL >
-    static void compute( integer_t const itype, char const jobz,
+    static void invoke( integer_t const itype, char const jobz,
             char const range, integer_t const n, MatrixA& a, MatrixB& b,
             real_type const vl, real_type const vu, integer_t const il,
             integer_t const iu, real_type const abstol, integer_t& m,
@@ -146,7 +143,7 @@
                 traits::vector_storage(ifail), info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( itype, jobz, range, n, a, b, vl, vu, il, iu, abstol, m, w, z,
+        invoke( itype, jobz, range, n, a, b, vl, vu, il, iu, abstol, m, w, z,
                 ifail, info, workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -173,7 +170,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sygvx_impl< value_type >::compute( itype, jobz, range, n, a, b, vl,
+    sygvx_impl< value_type >::invoke( itype, jobz, range, n, a, b, vl,
             vu, il, iu, abstol, m, w, z, ifail, info, work );
     return info;
 }
@@ -190,7 +187,7 @@
         integer_t& m, VectorW& w, MatrixZ& z, VectorIFAIL& ifail ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sygvx_impl< value_type >::compute( itype, jobz, range, n, a, b, vl,
+    sygvx_impl< value_type >::invoke( itype, jobz, range, n, a, b, vl,
             vu, il, iu, abstol, m, w, z, ifail, info, optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysv.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysv.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysv.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SYSV_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -80,13 +78,18 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
+
+    // uniform high-level dispatching-function
+    template< typename MatrixA, typename MatrixB, typename VectorP >
+    static void solve( MatrixA& A, MatrixB& B, VectorP& pivot,
+            integer_t& info ) {
+        invoke( A, pivot, B, info );
+    }
 
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB,
             typename WORK >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -112,15 +115,15 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< real_type > tmp_work( min_size_work(  ) );
-        compute( a, ipiv, b, info, workspace( tmp_work ) );
+        invoke( a, ipiv, b, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             integer_t& info, optimal_workspace work ) {
         real_type opt_size_work;
         detail::sysv( traits::matrix_uplo_tag(a),
@@ -130,7 +133,7 @@
                 traits::leading_dimension(b), &opt_size_work, -1, info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, ipiv, b, info, workspace( tmp_work ) );
+        invoke( a, ipiv, b, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work(  ) {
@@ -144,13 +147,18 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
+
+    // uniform high-level dispatching-function
+    template< typename MatrixA, typename MatrixB, typename VectorP >
+    static void solve( MatrixA& A, MatrixB& B, VectorP& pivot,
+            integer_t& info ) {
+        invoke( A, pivot, B, info );
+    }
 
     // user-defined workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB,
             typename WORK >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             integer_t& info, detail::workspace1< WORK > work ) {
         BOOST_STATIC_ASSERT( (boost::is_same< typename traits::matrix_traits<
                 MatrixA >::value_type, typename traits::matrix_traits<
@@ -176,15 +184,15 @@
 
     // minimal workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             integer_t& info, minimal_workspace work ) {
         traits::detail::array< value_type > tmp_work( min_size_work(  ) );
-        compute( a, ipiv, b, info, workspace( tmp_work ) );
+        invoke( a, ipiv, b, info, workspace( tmp_work ) );
     }
 
     // optimal workspace specialization
     template< typename MatrixA, typename VectorIPIV, typename MatrixB >
-    static void compute( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
+    static void invoke( MatrixA& a, VectorIPIV& ipiv, MatrixB& b,
             integer_t& info, optimal_workspace work ) {
         value_type opt_size_work;
         detail::sysv( traits::matrix_uplo_tag(a),
@@ -194,7 +202,7 @@
                 traits::leading_dimension(b), &opt_size_work, -1, info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( a, ipiv, b, info, workspace( tmp_work ) );
+        invoke( a, ipiv, b, info, workspace( tmp_work ) );
     }
 
     static integer_t min_size_work(  ) {
@@ -210,7 +218,7 @@
         Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sysv_impl< value_type >::compute( a, ipiv, b, info, work );
+    sysv_impl< value_type >::invoke( a, ipiv, b, info, work );
     return info;
 }
 
@@ -219,7 +227,7 @@
 inline integer_t sysv( MatrixA& a, VectorIPIV& ipiv, MatrixB& b ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sysv_impl< value_type >::compute( a, ipiv, b, info,
+    sysv_impl< value_type >::invoke( a, ipiv, b, info,
             optimal_workspace() );
     return info;
 }
Modified: sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp	(original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/lapack/driver/sysvx.hpp	2009-03-20 12:43:05 EDT (Fri, 20 Mar 2009)
@@ -15,9 +15,7 @@
 #define BOOST_NUMERIC_BINDINGS_LAPACK_DRIVER_SYSVX_HPP
 
 #include <boost/assert.hpp>
-#include <boost/mpl/vector.hpp>
 #include <boost/numeric/bindings/lapack/detail/lapack.h>
-#include <boost/numeric/bindings/lapack/keywords.hpp>
 #include <boost/numeric/bindings/lapack/workspace.hpp>
 #include <boost/numeric/bindings/traits/detail/array.hpp>
 #include <boost/numeric/bindings/traits/detail/utils.hpp>
@@ -94,14 +92,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename IWORK >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, IWORK > work ) {
@@ -156,7 +153,7 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
@@ -164,7 +161,7 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< integer_t > tmp_iwork( min_size_iwork(
                 traits::matrix_num_columns(a) ) );
-        compute( fact, a, af, ipiv, b, x, rcond, ferr, berr, info,
+        invoke( fact, a, af, ipiv, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -172,7 +169,7 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
@@ -190,7 +187,7 @@
                 &opt_size_work, -1, traits::vector_storage(tmp_iwork), info );
         traits::detail::array< real_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( fact, a, af, ipiv, b, x, rcond, ferr, berr, info,
+        invoke( fact, a, af, ipiv, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_iwork ) );
     }
 
@@ -209,14 +206,13 @@
 
     typedef ValueType value_type;
     typedef typename traits::type_traits<ValueType>::real_type real_type;
-    typedef typename mpl::vector< keywords::tag::A, keywords::tag::pivot,
-            keywords::tag::B > valid_keywords;
 
+$INCLUDE_TEMPLATES
     // user-defined workspace specialization
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR, typename WORK, typename RWORK >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             detail::workspace2< WORK, RWORK > work ) {
@@ -268,7 +264,7 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             minimal_workspace work ) {
@@ -276,7 +272,7 @@
                 traits::matrix_num_columns(a) ) );
         traits::detail::array< real_type > tmp_rwork( min_size_rwork(
                 traits::matrix_num_columns(a) ) );
-        compute( fact, a, af, ipiv, b, x, rcond, ferr, berr, info,
+        invoke( fact, a, af, ipiv, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -284,7 +280,7 @@
     template< typename MatrixA, typename MatrixAF, typename VectorIPIV,
             typename MatrixB, typename MatrixX, typename VectorFERR,
             typename VectorBERR >
-    static void compute( char const fact, MatrixA& a, MatrixAF& af,
+    static void invoke( char const fact, MatrixA& a, MatrixAF& af,
             VectorIPIV& ipiv, MatrixB& b, MatrixX& x, real_type& rcond,
             VectorFERR& ferr, VectorBERR& berr, integer_t& info,
             optimal_workspace work ) {
@@ -302,7 +298,7 @@
                 &opt_size_work, -1, traits::vector_storage(tmp_rwork), info );
         traits::detail::array< value_type > tmp_work(
                 traits::detail::to_int( opt_size_work ) );
-        compute( fact, a, af, ipiv, b, x, rcond, ferr, berr, info,
+        invoke( fact, a, af, ipiv, b, x, rcond, ferr, berr, info,
                 workspace( tmp_work, tmp_rwork ) );
     }
 
@@ -326,7 +322,7 @@
         VectorFERR& ferr, VectorBERR& berr, Workspace work ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sysvx_impl< value_type >::compute( fact, a, af, ipiv, b, x, rcond,
+    sysvx_impl< value_type >::invoke( fact, a, af, ipiv, b, x, rcond,
             ferr, berr, info, work );
     return info;
 }
@@ -341,7 +337,7 @@
         VectorFERR& ferr, VectorBERR& berr ) {
     typedef typename traits::matrix_traits< MatrixA >::value_type value_type;
     integer_t info(0);
-    sysvx_impl< value_type >::compute( fact, a, af, ipiv, b, x, rcond,
+    sysvx_impl< value_type >::invoke( fact, a, af, ipiv, b, x, rcond,
             ferr, berr, info, optimal_workspace() );
     return info;
 }