%%% -*-BibTeX-*- %%% ==================================================================== %%% BibTeX-file{ %%% author = "Todd L. Veldhuizen", %%% version = "1.01", %%% date = "25 November 2011", %%% time = "16:13:52 MDT", %%% filename = "veldhuizen-todd-l.bib", %%% address = "Indiana University Computer Science Dept. %%% ", %%% telephone = "?n/a?", %%% FAX = "?n/a?", %%% URL = "http://extreme.indiana.edu/~tveldhui/", %%% checksum = "30375 378 1895 19337", %%% email = "tveldhui at extreme.indiana.edu (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "", %%% license = "public domain", %%% supported = "yes", %%% docstring = "This is a bibliography of publications of %%% Todd L. Veldhuizen. The companion LaTeX file %%% veldhuizen-todd-l.ltx can be used to typeset %%% this bibliography. %%% %%% At version 1.01, the year coverage looked %%% like this: %%% %%% 1995 ( 2) 1997 ( 2) %%% 1996 ( 1) 1998 ( 4) %%% %%% Article: 4 %%% Book: 1 %%% InProceedings: 4 %%% %%% Total entries: 9 %%% %%% This file is available as part of the BibNet %%% Project. The master copy is available for %%% public access on ftp.math.utah.edu in the %%% directory tree /pub/bibnet/authors. It is %%% mirrored to netlib.bell-labs.com in the directory %%% tree /netlib/bibnet/authors, from which it is %%% available via anonymous ftp and the Netlib %%% service. %%% %%% The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.", %%% } %%% ==================================================================== %----------------------------------------------------------------------- % Journal abbreviations: @String{j-C-PLUS-PLUS-REPORT = "C++ Report"} @String{j-DDJ = "Dr. Dobb's Journal of Software Tools"} %----------------------------------------------------------------------- % Publisher abbreviations: @String{pub-SIAM = "SIAM"} @String{pub-SIAM:adr = "Philadelphia, PA, USA"} @String{pub-SPRINGER = "Springer-Verlag"} @String{pub-SPRINGER:adr = "Berlin, Heidelberg, New York, Tokyo"} %----------------------------------------------------------------------- % Bibliography entries: @Article{Veldhuizen:1995:ET, author = "Todd L. Veldhuizen", title = "Expression templates", journal = j-C-PLUS-PLUS-REPORT, volume = "7", number = "5", pages = "26--31", month = jun, year = "1995", CODEN = "CRPTE7", ISSN = "1040-6042", bibdate = "Tue Mar 25 13:34:48 MST 1997", bibsource = "ftp://ftp.math.utah.edu/pub/bibnet/authors/v/veldhuizen-todd-l.bib", note = "Reprinted in C++ Gems, ed. Stanley Lippman", URL = "http://extreme.indiana.edu/~tveldhui/papers/", abstract = "The technique of expression templates is a powerful and convenient alternative to C-style callback functions. It allows logical and algebraic expressions to be passed to functions as arguments, and inlined directly into the function body. Expression templates also solve the problem of evaluating vector and matrix expressions in a single pass without temporaries.", acknowledgement = ack-nhfb, affiliation = "Dept. of Syst. Design Eng., Waterloo Univ., Ont., Canada", classcodes = "C6110J (Object-oriented programming); C6115 (Programming support); C4140 (Linear algebra); C6120 (File organisation)", classification = "C4140 (Linear algebra); C6110J (Object-oriented programming); C6115 (Programming support); C6120 (File organisation)", corpsource = "Dept. of Syst. Design Eng., Waterloo Univ., Ont., Canada", keywords = "abstract data types; Algebraic expressions; algebraic expressions; Arguments; arguments; C language; C-style callback functions; Expression templates; expression templates; expressions; libraries; logical; Logical expressions; matrix; matrix algebra; Matrix expressions; object-; object-oriented programming; oriented languages; Single pass; single pass; software; Vector expressions; vector expressions", thesaurus = "Abstract data types; C language; Matrix algebra; Object-oriented languages; Object-oriented programming; Software libraries", treatment = "T Theoretical or Mathematical", } @Article{Veldhuizen:1995:UCT, author = "Todd L. Veldhuizen", title = "Using {C++} template metaprograms", journal = j-C-PLUS-PLUS-REPORT, volume = "7", number = "4", pages = "36--43", month = may, year = "1995", CODEN = "CRPTE7", ISSN = "1040-6042", bibdate = "Tue Mar 25 13:34:48 MST 1997", bibsource = "ftp://ftp.math.utah.edu/pub/bibnet/authors/v/veldhuizen-todd-l.bib", note = "Reprinted in C++ Gems, ed. Stanley Lippman", URL = "http://extreme.indiana.edu/~tveldhui/papers/", abstract = "Template metaprograms can generate useful code when interpreted by the compiler, which results in large speed increases for many applications. A simple example that generates factorials at compile time is presented. Although this technique might seem like just a cute C++ trick, it becomes powerful when combined with normal C++ code. In this hybrid approach, source code contains two programs: the normal C++ runtime program, and a template metaprogram that runs at compile time. Template metaprograms can generate useful code when interpreted by the compiler, such as a massively inlined algorithm-that is, an implementation of an algorithm that works for a specific input size, and has its loops unrolled. This results in large speed increases for many applications. The article presents a simple template metaprogram that generates a bubble sort algorithm and its performance is analysed.", acknowledgement = ack-nhfb, affiliation = "Waterloo Univ., Ont., Canada", classcodes = "C6110J (Object-oriented programming); C6140D (High level languages); C6150C (Compilers, interpreters and other processors)", classification = "C6110J (Object-oriented programming); C6140D (High level languages); C6150C (Compilers, interpreters and other processors)", corpsource = "Waterloo Univ., Ont., Canada", keywords = "algorithm; bubble sort; Bubble sort algorithm; C language; C++; C++ runtime program; C++ template metaprograms; Compiler interpretation; compiler interpretation; Factorials; factorials; Hybrid approach; hybrid approach; increases; Massively inlined algorithm; massively inlined algorithm; Normal C++ code; normal C++ code; object-oriented; object-oriented languages; program compilers; program interpreters; programming; runtime program; speed; Speed increases", thesaurus = "C language; Object-oriented languages; Object-oriented programming; Program compilers; Program interpreters", treatment = "P Practical", } @Article{Veldhuizen:1996:LAC, author = "Todd L. Veldhuizen and Kumaraswamy Ponnambalam", title = "Linear algebra with {C++} template metaprograms", journal = j-DDJ, volume = "21", number = "8", pages = "38, 40--42, 44", month = aug, year = "1996", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Fri Jan 3 06:28:31 MST 1997", bibsource = "ftp://ftp.math.utah.edu/pub/bibnet/authors/v/veldhuizen-todd-l.bib", URL = "http://extreme.indiana.edu/~tveldhui/papers/", acknowledgement = ack-nhfb, } @Article{Veldhuizen:1997:SCC, author = "Todd L. Veldhuizen", title = "Scientific Computing: {C++} Versus {Fortran}: {C++} has more than caught up", journal = j-DDJ, volume = "22", number = "11", pages = "34, 36--38, 91", month = nov, year = "1997", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Fri Nov 28 17:28:03 MST 1997", bibsource = "ftp://ftp.math.utah.edu/pub/bibnet/authors/v/veldhuizen-todd-l.bib", URL = "http://extreme.indiana.edu/~tveldhui/papers/", abstract = "In the past C++ programs were noticeably slower than their Fortran counterparts. But the performance of C++ programs has improved mainly because of better optimizing C++ compilers and libraries such as Todd's Blitz++, a C++ class library designed for scientific computing.", acknowledgement = ack-nhfb, } @InProceedings{Veldhuizen:1997:WCF, author = "Todd L. Veldhuizen and M. E. Jernigan", booktitle = "Proceedings of the 1st International Scientific Computing in Object-Oriented Parallel Environments (ISCOPE'97)", title = "Will {C++} be faster than {Fortran}?", publisher = pub-SPRINGER, address = pub-SPRINGER:adr, year = "1997", bibdate = "Thu Oct 29 08:09:18 MST 1998", bibsource = "ftp://ftp.math.utah.edu/pub/bibnet/authors/v/veldhuizen-todd-l.bib", series = "Lecture Notes in Computer Science", URL = "http://extreme.indiana.edu/~tveldhui/papers/", abstract = "After years of being dismissed as too slow for scientific computing, C++ has caught up with Fortran and appears ready to give it stiff competition. We survey the reasons for the historically poor performance of C++ (pairwise expression evaluation, the abstraction penalty, aliasing ambiguities) and explain how these problems have been resolved. C++ can be faster than Fortran for some applications, due to template techniques (such as expression templates and template metaprograms) which permit optimizations beyond the ability of current Fortran compilers.", conflocation = "Marina del Rey, California", conftitle = "International Scientific Computing in Object-Oriented Parallel Environments", keywords = "object-oriented numerics; scientific computing in C++; expression templates; template metaprograms; loop transformations", } @InProceedings{Veldhuizen:1998:AB, author = "Todd L. Veldhuizen", booktitle = "Proceedings of the 2nd International Scientific Computing in Object-Oriented Parallel Environments (ISCOPE'98)", title = "Arrays in {Blitz++}", publisher = pub-SPRINGER, address = pub-SPRINGER:adr, year = "1998", bibdate = "Thu Oct 29 08:09:18 MST 1998", bibsource = "ftp://ftp.math.utah.edu/pub/bibnet/authors/v/veldhuizen-todd-l.bib", series = "Lecture Notes in Computer Science", URL = "http://extreme.indiana.edu/~tveldhui/papers/", abstract = "Numeric arrays in Blitz++ rival the efficiency of Fortran, but without any extensions to the C++ language. Blitz++ has features unavailable in Fortran 90/95, such as arbitrary transpose operations, array renaming, tensor notation, partial reductions, multicomponent arrays and stencil operators. The library handles parsing and analysis of array expressions on its own using the expression templates technique, and performs optimizations (such as loop transformations) which have until now been the responsibility of compilers.", conflocation = "Santa Fe, New Mexico", conftitle = "International Scientific Computing in Object-Oriented Parallel Environments", keywords = "object-oriented numerics; high-performance computing; array loop transformations; array languages; expression templates; active libraries", } @InProceedings{Veldhuizen:1998:ALR, author = "Todd L. Veldhuizen and Dennis Gannon", booktitle = "Proceedings of the SIAM Workshop on Object Oriented Methods for Inter-operable Scientific and Engineering Computing (OO'98)", title = "Active Libraries: Rethinking the roles of compilers and libraries", publisher = pub-SIAM, address = pub-SIAM:adr, year = "1998", bibdate = "Thu Oct 29 08:09:18 MST 1998", bibsource = "ftp://ftp.math.utah.edu/pub/bibnet/authors/v/veldhuizen-todd-l.bib", URL = "http://extreme.indiana.edu/~tveldhui/papers/", abstract = "We describe Active Libraries, which take an active role in compilation. Unlike traditional libraries which are passive collections of functions and objects, Active Libraries may generate components, specialize algorithms, optimize code, configure and tune themselves for a target machine, and describe themselves to tools (such as profilers and debuggers) in an intelligible way. Several such libraries are described, as are implementation technologies.", conflocation = "Yorktown Heights, New York", conftitle = "SIAM Workshop on Object Oriented Methods for Inter-operable Scientific and Engineering Computing", keywords = "abstraction penalty; domain-specific languages; object-oriented languages; self-optimizing abstractions; Blitz++; POOMA; MTL; GMCL; FFTW; PhiPAC; ATLAS; transformational optimization; generative optimization; explorative optimization; compositional optimization; C++ templates; component generation; generic programming; generative programming; reflection; metalevel processing; run-time code generation; partial evaluation; multilevel languages; extensible programming tools; active libraries", } @InProceedings{Veldhuizen:1998:GFLa, author = "Todd L. Veldhuizen and M. E. Jernigan", booktitle = "Proceedings of the International Conference on Acoustics, Speech, and Signal Processing (ICASSP'98)", title = "Grid Filters for Local Nonlinear Image Restoration", year = "1998", bibsource = "ftp://ftp.math.utah.edu/pub/bibnet/authors/v/veldhuizen-todd-l.bib", URL = "http://extreme.indiana.edu/~tveldhui/papers/", abstract = "We describe a new approach to local nonlinear image restoration, based on approximating functions using a regular grid of points in a many-dimensional space. Symmetry reductions and compression of the sparse grid make it feasible to work with eight-dimensional grids as large as $14^8$. Unlike polynomials and neural networks, whose filtering complexity per pixel is linear in the number of filter coefficients, grid filters have $O(1)$ complexity per pixel. Grid filters require only a single presentation of the training samples, are numerically stable, leave unusual image features unchanged, and are a superset of order statistic filters. Results are presented for blurring and additive noise.", conflocation = "Seattle, Washington", conftitle = "ICASSP'98", keywords = "image restoration; nonlinear image processing; function approximation; sparse grids; piecewise linear interpolation; additive noise; grid filters", } @Book{Veldhuizen:1998:GFLb, author = "Todd L. Veldhuizen", title = "Grid Filters for Local Nonlinear Image Restoration", publisher = "University of Waterloo", address = "Waterloo, Ontario, Canada", year = "1998", bibsource = "ftp://ftp.math.utah.edu/pub/bibnet/authors/v/veldhuizen-todd-l.bib", note = "M.A.Sc. Thesis", URL = "http://extreme.indiana.edu/~tveldhui/papers/", abstract = "A new approach to local nonlinear image restoration is described, based on approximating functions using a regular grid of points in a many-dimensional space. Symmetry reductions and compression of the sparse grid make it feasible to work with twelve-dimensional grids as large as $22^{12}$. Unlike polynomials and neural networks whose filtering complexity per pixel is linear in the number of filter coefficients, grid filters have $O(1)$ complexity per pixel. Grid filters require only a single presentation of the training samples, are numerically stable, leave unusual image features unchanged, and are a superset of order statistic filters. Results are presented for additive noise, blurring, and superresolution.", keywords = "image restoration; nonlinear image processing; function approximation; sparse grids; piecewise linear interpolation; MMSE filters; grid filters; local nonlinear filters; order-statistic filters; symmetry; signal processing; regularization; document imaging; coherent superresolution; incoherent superresolution", }