Mercurial > hg > what-is-octave
diff PoliMI2012/what-is-octave.tex @ 4:0a1567794b40
[mq]: folder_reorganization
author | Carlo de Falco <cdf@users.sourceforge.net> |
---|---|
date | Thu, 08 Nov 2012 09:55:34 +0100 |
parents | what-is-octave.tex@8e32f52a1888 |
children | f8c352d9af2d |
line wrap: on
line diff
copy from what-is-octave.tex copy to PoliMI2012/what-is-octave.tex --- a/what-is-octave.tex +++ b/PoliMI2012/what-is-octave.tex @@ -1,4 +1,4 @@ -\documentclass[12pt]{beamer} +\documentclass[10pt]{beamer} \usetheme{Octave} @@ -8,50 +8,59 @@ \usepackage[utf8]{inputenc} \usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade} \usepackage{verbatim} - -\pdfinfo -{ - /Title (What is Octave?) - /Creator (TeX) - /Author (Jordi Gutiérrez Hermoso) +\usepackage{listings} +\usepackage{attachfile} +\lstset{ + language=C++, + keywordstyle=\bfseries\ttfamily\color[rgb]{0,0,1}, + identifierstyle=\ttfamily, + commentstyle=\color[rgb]{0.133,0.545,0.133}, + stringstyle=\ttfamily\color[rgb]{0.627,0.126,0.941}, + showstringspaces=false, + basicstyle=\scriptsize, + numberstyle=\tiny, + numbers=left, + stepnumber=1, + numbersep=10pt, + tabsize=2, + breaklines=true, + prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}}, + breakatwhitespace=false, + aboveskip={1.5\baselineskip}, + columns=fixed, + upquote=true, + extendedchars=true, } +%\pdfinfo +%{ +% /Title (What is Octave?) +% /Creator (TeX) +% /Author (Jordi Guti\'errez Hermoso) +%} -\title{What is Octave?} -\author{Jordi Gutiérrez Hermoso} -% \date{September 6th 2006} + +\title{GNU Octave\\ A free high-level tool for Scientific Computing} +\author[cdf, jgh]{{\bf Carlo de Falco}, Jordi Guti\'errez Hermoso} \begin{document} -\frame{\titlepage} +\frame[plain]{\titlepage} \section*{} \begin{frame} \frametitle{Outline} - \tableofcontents[section=1,hidesubsections] + \tableofcontents[section=2] \end{frame} \AtBeginSection[] -{ - \frame<handout:0> - { - \frametitle{Outline} - \tableofcontents[currentsection,hideallsubsections] - } -} +{\frame<handout:0>{\frametitle{Outline}\tableofcontents[currentsection]}} \AtBeginSubsection[] -{ - \frame<handout:0> - { - \frametitle{Outline} - \tableofcontents[sectionstyle=show/hide,subsectionstyle=show/shaded/hide] - } -} +{\frame<handout:0>{\frametitle{Outline}\tableofcontents[sectionstyle=show/hide,subsectionstyle=show/shaded/hide]}} \newcommand<>{\highlighton}[1]{% - \alt#2{\structure{#1}}{{#1}} -} +\alt#2{\structure{#1}}{{#1}}} \newcommand{\icon}[1]{\pgfimage[height=1em]{#1}} @@ -61,46 +70,24 @@ %%%%%%%%%% Content starts here %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{What is it?} -\begin{frame} - \frametitle{What is Octave?} - \begin{block}{Our motto} - \begin{quote} - \Huge A free numerical environment mostly compatible with \sc{Matlab} - \end{quote} - \end{block} -\end{frame} - +\section{What is Octave?} +\subsection{Definition} \begin{frame} \frametitle{What is Octave?} - \begin{block}{What is compatibility?} + \begin{block}{Octave} + {\it ``A \underline{free} \only<1->{\footnote{``free'' = ``libero'' $\neq$ ``gratis''}} + numerical environment mostly compatible with \sc{Matlab}''}\\[3mm] \begin{itemize} - \item A point of much debate... - \pause - \item My personal viewpoint, shared by some: if it works in - {\sc{Matlab}}, it should work in Octave. If it works in Octave, it can - break in {\sc{Matlab}}. - \pause - \item Does this also mean it has to look exactly like {\sc{Matlab}}? Can - we deviate at all? - \pause - \item The perils of ``compatibility flags'' + \item What is compatibility? A point of much debate... + \item If it works in + {\sc{Matlab}}, it should work in Octave. + \item If it breaks it is considered a bug. + \item If it works in Octave, it can break in {\sc{Matlab}}. \end{itemize} \end{block} \end{frame} \begin{frame} - \frametitle{The interface} - \begin{itemize} - \item Primarily a CLI interface (BYOTE) - \pause - \item Most requested feature: GUI! (we're finally listening) - \pause - \item Tons of existing GUIs, though. - \end{itemize} -\end{frame} - -\begin{frame} \frametitle{Lines of code} The stuff Octave is made of... \pause @@ -121,55 +108,74 @@ \end{block} \end{frame} + \begin{frame} \frametitle{Features} \begin{block}{Current features} \begin{itemize} \item N-d arrays, linear algebra, sparse matrices \item Nonlinear equations - \item Differential equations - \item Image processing - \item Signal processing - \item Statistics - \item Control theory - \item Special functions - \pause + \item Ordinary/Algebraic Differential Equations, + \item Image processing, statistics, special functions \item Many more... \end{itemize} \end{block} + + \begin{block}{Features in development} + \begin{itemize} + \item GUI + \item JIT compiling + \item classdef OOP + %\item Least squares spectral analysis + \end{itemize} + \end{block} \end{frame} \begin{frame} - \frametitle{Features} - \begin{block}{Features in development} - \begin{itemize} - \item JIT compiling - \item classdef OOP - \item GUI - \item Least squares spectral analysis - \end{itemize} - \end{block} + \frametitle{What does it look like} + \begin{itemize} + \item Primarily a CLI interface + \only<1>{\begin{figure} + \begin{center} + \includegraphics[height=.6\textheight]{screenshot} + \caption{CLI screenshot}\end{center} + \end{figure}} + \pause + \item Most requested feature: GUI! Will ship with next release (4.0) + \pause + \only<2->{\begin{figure} + \begin{center} + \includegraphics[height=.6\textheight]{gui_screenshot.jpg} + \caption{Qt based GUI development started as J. Dawid's GSoC2012 project} + \end{center} + \end{figure}} + \end{itemize} \end{frame} -\section{History} + +\subsection{History} \begin{frame} \frametitle{In the beginning... } \begin{itemize} - \item Chemical reactor textbook needed companion software + \item Companion software for chemical reactor textbook by James B. Rawlings + and John G. Ekerdt \item John W. Eaton (hereafter, jwe) started coding in 1993 \end{itemize} \pause \begin{block}{Rawlings said...} \begin{quote} - \center - \huge Why don't you call it ``Octave''? + \center Why don't you call it ``Octave''? \end{quote} \end{block} + \begin{itemize} + \item Octave refers to Octave Levenspiel, nothing to do with music ... + \end{itemize} + \end{frame} \begin{frame} @@ -200,9 +206,9 @@ \item[1998] Version 2.1 development \item[2004] Version 2.9 in preparation for 3.0 release \item[2007] Version 3.0 major upgrade - \item[2010] Version 3.2.4, last before using hg branchily + \item[2010] Version 3.2.4, last before using hg \item[2011] Version 3.4.0 - \item[2012] Version 3.6.0 + \item[2012] Version 3.6.4 \end{itemize} \end{block} \end{frame} @@ -218,35 +224,44 @@ \item[1998] Original sparse matrix implementation \item[2001] Octave-Forge's first commit \item[2006] MEX interface in core - \item[2007] Implementation of handle graphics + \item[2007] Implementation of handle graphics, full support for sparse matrices \item[2009] OpenGL plotting \item[2010] -forge option for pkg.m - \item[2012?] Nested functions + \item[2011] Profiler + \item[2012] Nested functions \pause - \item[2013?] GUI? JIT compiling? + \item[2013?] GUI, JIT compiling \end{itemize} \end{block} \end{frame} -\section{Community dynamics} +\subsection{Community dynamics} \begin{frame} - \frametitle{Communication} - \begin{block}{Casual users} + \frametitle{Web resources} + \begin{block}{Web pages} \begin{itemize} - \item Mailing lists - \item \#octave channel in Freenode - \item Octave wiki - \item Savannah bug tracker + \item \href{http://www.octave.org/}{Octave website} + \item \href{http://octave.sf.net/}{Octave-Forge website} + \item \href{http://wiki.octave.org/}{Octave wiki} + \end{itemize} + \end{block} + + \begin{block}{Users communication} + \begin{itemize} + \item \href{https://mailman.cae.wisc.edu/listinfo/help-octave}{Octave users mailing list} + \item \href{https://lists.sourceforge.net/lists/listinfo/octave-dev}{Octave-Forge mailing list} + \item \href{http://webchat.freenode.net/?channels=octave&uio=MT1mYWxzZSYyPXRydWUmMTI9dHJ1ZQda} + {\#octave channel in Freenode} + \item \href{http://savannah.gnu.org/bugs/?group=octave}{Savannah bug tracker} \end{itemize} \end{block} \pause - \begin{block}{Developers} + \begin{block}{Developers collaboration} \begin{itemize} - \item All of the above - \item Mercurial and svn repositories - \item Octave-Forge list + \item \href{http://hg.savannah.gnu.org/hgweb/octave/shortlog}{Octave Mercurial repository} + \item \href{http://sourceforge.net/p/octave/code}{Octave-Forge Subversion repository} \end{itemize} \end{block} \end{frame} @@ -255,15 +270,115 @@ \frametitle{Social structure} \begin{itemize} \item Like all free projects, every user is a potential developer. - \pause - \item Tiny minority of users are responsible for almost all of the - code (but does this reflect true involvement...?) - \pause - \item 12 current core developers (with write access to repo) - \pause - \item 296 total contributors over all time - \pause - \item How many users? Thousands? Millions? + \item 15 current Core developers (with write access to repo) + \only<1>{\begin{figure} + \centering + \includegraphics[width=.5\linewidth]{Core-developers} + \end{figure}} + \only<2->{\item 49 currently registered 'Forge developers (38 active)} + \only<2>{\begin{figure} + \centering + \includegraphics[width=.6\linewidth]{Forge-developers} + \end{figure}} + \only<3->{\item 296 total contributors over all time\\} + {\only<3>{\fontsize{1}{.1}\selectfont +Ben Abbott Andy Adler Giles Anderson +Joel Andersson Muthiah Annamalai Marco Atzeri +Shai Ayal Roger Banks Ben Barrowes +Alexander Barth David Bateman Heinz Bauschke +Roman Belov Karl Berry David Billinghurst +Don Bindner Jakub Bogusz Moritz Borgmann +Paul Boven Richard Bovey John Bradshaw +Marcus Brinkmann Remy Bruno Ansgar Burchard +Marco Caliari Daniel Calvelo John C. Campbell +Juan Pablo Carbajal Jean-Francois Cardoso Joao Cardoso +Larrie Carr David Castelow Vincent Cautaerts +Clinton Chee Albert Chin-A-Young Carsten Clark +J. D. Cole Martin Costabel Michael Creel +Jeff Cunningham Martin Dalecki Jorge Barros de Abreu +Carlo de Falco Jacob Dawid Thomas D. Dean +Philippe Defert Bill Denney Fabian Deutsch +Christos Dimitrakakis David M. Doolin Carnë Draug +Pascal A. Dupuis John W. Eaton Dirk Eddelbuettel +Pieter Eendebak Paul Eggert Stephen Eglen +Peter Ekberg Rolf Fabian Gunnar Farnebäck +Stephen Fegan Ramon Garcia Fernandez Torsten Finke +Jose Daniel Munoz Frias Brad Froehle Castor Fu +Eduardo Gallestey Walter Gautschi Klaus Gebhardt +Driss Ghaddab Nicolo Giorgetti Michael D. Godfrey +Michael Goffioul Glenn Golden Tomislav Goles +Keith Goodman Brian Gough Steffen Groot +Etienne Grossmann David Grundberg Peter Gustafson +Kai Habel Patrick Häcker William P. Y. Hadisoeseno +Jaroslav Hajek Benjamin Hall Kim Hansen +Søren Hauberg Dave Hawthorne Daniel Heiserer +Martin Helm Stefan Hepp Jordi Gutiérrez Hermoso +Yozo Hida Ryan Hinton Roman Hodek +A. Scottedward Hodel Richard Allan Holcombe Tom Holroyd +David Hoover Kurt Hornik Christopher Hulbert +Cyril Humbert Teemu Ikonen Alan W. Irwin +Geoff Jacobsen Mats Jansson Cai Jianming +Steven G. Johnson Heikki Junes Matthias Jüschke +Atsushi Kajita Jarkko Kaleva Mohamed Kamoun +Lute Kamstra Fotios Kasolis Thomas Kasper +Joel Keay Mumit Khan Paul Kienzle +Aaron A. King Arno J. Klaassen Alexander Klein +Geoffrey Knauth Heine Kolltveit Ken Kouno +Kacper Kowalik Daniel Kraft Aravindh Krishnamoorthy +Oyvind Kristiansen Piotr Krzyzanowski Volker Kuhlmann +Tetsuro Kurita Miroslaw Kwasniak Rafael Laboissiere +Kai Labusch Claude Lacoursiere Walter Landry +Bill Lash Dirk Laurie Maurice LeBrun +Friedrich Leisch Jyh-miin Lin Timo Lindfors +Benjamin Lindner Ross Lippert David Livings +Sebastien Loisel Erik de Castro Lopo Massimo Lorenzin +Emil Lucretiu Hoxide Ma James Macnicol +Jens-Uwe Mager Rob Mahurin Ricardo Marranita +Orestes Mas Makoto Matsumoto Tatsuro Matsuoka +Laurent Mazet G. D. McBain Alexander Mamonov +Christoph Mayer Júlio Hoffimann Mendes Thorsten Meyer +Petr Mikulik Stefan Monnier Antoine Moreau +Kai P. Mueller Hannes Müller Victor Munoz +Carmen Navarrete Todd Neal Philip Nienhuis +Al Niessner Rick Niles Takuji Nishimura +Kai Noda Eric Norum Krzesimir Nowak +Michael O'Brien Peter O'Gorman Thorsten Ohl +Arno Onken Luis F. Ortiz Scott Pakin +Gabriele Pannocchia Sylvain Pelissier Per Persson +Primozz Peterlin Jim Peterson Danilo Piazzalunga +Nicholas Piper Elias Pipping Robert Platt +Hans Ekkehard Plesser Tom Poage Orion Poplawski +Ondrej Popp Jef Poskanzer Francesco Potortì +Konstantinos Poulios Jarno Rajahalme James B. Rawlings +Eric S. Raymond Balint Reczey Joshua Redstone +Lukas Reichlin Michael Reifenberger Anthony Richardson +Jason Riedy E. Joshua Rigler Petter Risholm +Matthew W. Roberts Andrew Ross Mark van Rossum +Joe Rothweiler Kevin Ruland Kristian Rumberg +Ryan Rusaw Olli Saarela Toni Saarela +Juhani Saastamoinen Radek Salac Ben Sapp +Aleksej Saushev Alois Schlögl Michel D. Schmid +Julian Schnidder Nicol N. Schraudolph Sebastian Schubert +Ludwig Schwardt Thomas L. Scofield Daniel J. Sebald +Dmitri A. Sergatskov Vanya Sergeev Baylis Shanks +Andriy Shinkarchuck Robert T. Short Joseph P. Skudlarek +John Smith Julius Smith Shan G. Smith +Peter L. Sondergaard Joerg Specht Quentin H. Spencer +Christoph Spiel Richard Stallman Russell Standish +Brett Stewart Doug Stewart Jonathan Stickel +Judd Storrs Thomas Stuart Ivan Sutoris +John Swensen Daisuke Takago Ariel Tankus +Matthew Tenny Georg Thimm Duncan Temple Lang +Kris Thielemans Olaf Till Christophe Tournery +Thomas Treichl Karsten Trulsen Frederick Umminger +Utkarsh Upadhyay Stefan van der Walt Peter Van Wieren +James R. Van Zandt Gregory Vanuxem Ivana Varekova +Thomas Walter Andreas Weber Olaf Weber +Thomas Weber Rik Wehbring Bob Weigel +Andreas Weingessel Martin Weiser Michael Weitzel +David Wells Fook Fah Yap Sean Young +Michael Zeising Federico Zenith Alex Zvoleff }} + \only<4->{\item How many users? Thousands? Millions?} \end{itemize} \end{frame} @@ -273,8 +388,8 @@ \pause \begin{block}{How can I contribute?} \begin{itemize} - \item code (obviously) - \pause + \item Code (obviously) + \item Money (pay-what-you-need) \item Documentation (especially examples) \item Wiki maintenance \item Help in the mailing list @@ -282,7 +397,211 @@ \end{itemize} \end{block} \pause - Stick around this conference if you want to learn more about how to get involved! + % Stick around this conference if you want to learn more about how to get involved! +\end{frame} + +\begin{frame} + \frametitle{Student projects} + \begin{block}{Google Summer of Code } + \begin{itemize} + \item GSoC 2011 + \begin{itemize} + \item Daniel Kraft, Profiler + \end{itemize} + \item GSoC 2012 + \begin{itemize} + \item Jacob Dawid, Qt GUI + \item Max Brister, JIT + \item Ben Lewis, Lest Squares Spectral Analysis + \end{itemize} + \end{itemize} + \end{block} + \begin{block}{European Space Agency's Summer of Code in Space} + \begin{itemize} + \item SOCIS 2012 + \begin{itemize} + \item Wendy Liu, Agora Octave + \item Andrius Sutas, Instrument-Control + \end{itemize} + \end{itemize} + \end{block} + \pause + % Stick around this conference if you want to learn more about how to get involved! +\end{frame} + +\section{Octave and ...} +\subsection{Octave and Octave-Forge} + +\begin{frame}[fragile]{Octave-Forge} +\begin{block}{Octave-Forge} +\href{http://octave.sf.net}{Octave Forge} Is a place for concurrently developing and distributing +extension packages for Octave. +\end{block} +\begin{itemize} +\item Each package has a \emph{maintainer} responsible for updating and releasing new versions of the package +\item Some packages are maintained by \emph{The Community} +\item Installation via an integrated \emph{package manager} +\end{itemize} +\end{frame} + +\begin{frame}[fragile]{PKG} +\begin{lstlisting}[keywordstyle=] +>> pkg install -forge miscellaneous +For information about changes from previous versions of the miscellaneous package, run: news ("miscellaneous"). +>> pkg list +Package Name | Version | Installation directory +---------------------+---------+----------------------- + bim | 1.1.1 | ~/octave/bim-1.1.1 + fpl | 1.3.3 | ~/octave/fpl-1.3.3 + general | 1.3.1 | ~/octave/general-1.3.1 + geometry | 1.6.0 | ~/octave/geometry-1.6.0 + miscellaneous | 1.2.0 | ~/octave/miscellaneous-1.2.0 +>> pkg load miscellaneous +>> pkg list +Package Name | Version | Installation directory +---------------------+---------+----------------------- + bim | 1.1.1 | ~/octave/bim-1.1.1 + fpl | 1.3.3 | ~/octave/fpl-1.3.3 + general | 1.3.1 | ~/octave/general-1.3.1 + geometry | 1.6.0 | ~/octave/geometry-1.6.0 + miscellaneous *| 1.2.0 | ~/octave/miscellaneous-1.2.0 +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{PKG} +\begin{lstlisting}[keywordstyle=] +>> pkg describe bim -verbose +--- +Package name: + bim +Version: + 1.1.1 +Short description: + Package for solving Diffusion Advection Reaction (DAR) Partial Differential Equations +Status: + Not loaded +--- +Provides: +Matrix assembly + bim1a_advection_diffusion + bim1a_advection_upwind + bim2a_advection_diffusion +... +Pre-processing and Post-processing computations + bim2c_mesh_properties +... +>> +\end{lstlisting} \end{frame} +\begin{frame}[fragile]{Some interesting packages} +\only<1>{\includegraphics[width=.9\linewidth]{bim}} +\only<2>{\includegraphics[width=.9\linewidth]{msh}} +\only<3>{\includegraphics[width=.9\linewidth]{fpl}} + +\href{http://wiki.octave.org/Bim_package}{usage examples in the wiki} +\end{frame} + +\subsection{Octave and Matlab} +\begin{frame}[fragile]{Broadcasting} +\begin{itemize} +\item Since 3.6.0, Octave automatically broadcasts arrays when using elementwise binary operators. +\item Corresponding array dimensions must either be equal or, one of them must be 1. +\item In case all dimensions are equal, ordinary element-by-element arithmetic takes place. +\item When one of the dimensions is 1, the array with that singleton dimension gets copied along +that dimension until it matches the dimension of the other array. +\end{itemize} + +\end{frame} + +\begin{frame}[fragile]{Broadcasting} +\scriptsize +\begin{lstlisting}[keywordstyle=] + x = [1 2 3; 4 5 6; 7 8 9]; + y = [10 20 30]; + x + y + 11 22 33 + 14 25 36 + 17 28 39 +\end{lstlisting} +\begin{itemize} +\item Without broadcasting, x + y would be an error because dimensions do not agree. +\item With broadcasting it is as if the following operation were performed +\end{itemize} +\scriptsize +\begin{lstlisting}[keywordstyle=] + x = [1 2 3;4 5 6;7 8 9]; + y = [10 20 30; 10 20 30; 10 20 30]; + x + y + 11 22 33 + 14 25 36 + 17 28 39 +\end{lstlisting} +\href{http://wiki.octave.org/FAQ#How_is_Octave_different_from_Matlab.3F}{Other notable differences with Matlab, listed in the wiki} +\end{frame} +\subsection{Octave and C++} + +\begin{frame}[fragile]{dld-functions} +Implement an Octave interpreter function in C++ +\vspace*{-4mm} +\only<1>{\lstinputlisting[language=C++,linerange=1-15,firstnumber=1]{./examples/dld.cc}} +\only<2>{\lstinputlisting[language=C++,linerange=16-30,firstnumber=last]{./examples/dld.cc}} +\only<3>{\lstinputlisting[keywordstyle=]{./examples/dld_run.txt}} +\vspace*{-4mm} +\attachfile[icon=Paperclip]{./examples/dld.cc}{source code of the example} +\end{frame} + +\begin{frame}[fragile]{liboctave} +Use Octave's Matrix/Array Classes in a C++ application +\vspace*{-4mm} +\only<1>{\lstinputlisting[language=C++]{./examples/standalone.cc}} +\only<2>{\lstinputlisting[keywordstyle=]{./examples/standalone_run.txt}} +\vspace*{-4mm} +\attachfile[icon=Paperclip]{./examples/standalone.cc}{source code of the example} +\end{frame} + +\begin{frame}[fragile]{Embedding Octave} +You can embed the Octave interpreter in your C++ application +\only<1>{\lstinputlisting[language=C++,linerange=1-17,firstnumber=1]{./examples/embedded.cc}} +\only<2>{\lstinputlisting[language=C++,linerange=18-29,firstnumber=last]{./examples/embedded.cc}} +\pause +\attachfile[icon=Paperclip]{./examples/embedded.cc}{source code of the example} +\end{frame} + +\begin{frame}[fragile]{An advanced example} +Add a new class to the Octave interpreter and work around Octave's pass-by-value semantics\\ +\attachfile[icon=Paperclip]{./examples/myobject.cc}{source code of the example (.cc)}\\ +\attachfile[icon=Paperclip]{./examples/myobject.h}{source code of the example (.h)} +\end{frame} + + +\subsection{Octave and Parallel Computing} + +\begin{frame}[fragile]{parcellfun and pararrayfun} +\scriptsize +Parcellfun is distributed in the package ``general'' it implements parallelization via {\tt fork ()} and {\tt pipe ()} +\vspace*{-2mm} +\only<1>{\lstinputlisting[language=Octave,linerange=34-51,firstnumber=1]{./examples/parcellfun_example.m}} +\only<2>{\lstinputlisting[language=Octave,linerange=61-76,firstnumber=1]{./examples/parcellfun_example.m}} +\vspace*{-4mm} +\attachfile[icon=Paperclip]{./examples/parcellfun_example.m}{source code of the example} +\end{frame} + +\begin{frame}[fragile]{openmpi\_ext} +\scriptsize +The package {\tt openmpi\_ext} provides wrappers for the main MPI functions in {\tt openmpi} +\vspace*{-4mm} +\only<1>{\includegraphics[width=.9\linewidth]{openmpi_ext}} +\only<2>{\lstinputlisting[language=Octave,firstnumber=1]{./examples/Pi.m}} +\only<3>{\lstinputlisting[language=Octave,firstnumber=1]{./examples/Pi_run.txt}} +\vspace*{-4mm} +\attachfile[icon=Paperclip]{./examples/parcellfun_example.m}{source code of the example} +\end{frame} + +% +%\subsection{Octave and LifeV} +%\frame{} +% +% + \end{document}