|
1 | 1 | \documentclass{beamer}
|
2 | 2 | \usetheme{Madrid}
|
| 3 | +\beamertemplatenavigationsymbolsempty |
| 4 | +\setbeamertemplate{blocks}[rounded][shadow=true] |
| 5 | + |
| 6 | +\usepackage{listings} |
| 7 | + |
| 8 | +\usepackage{amssymb} |
| 9 | +\usepackage{amsmath} |
| 10 | + |
| 11 | +\definecolor{mygreen}{rgb}{0,0.6,0} |
| 12 | + |
| 13 | +\lstset{ |
| 14 | + basicstyle=\footnotesize, |
| 15 | + breakatwhitespace=false, |
| 16 | + breaklines=false, |
| 17 | + captionpos=b, |
| 18 | + commentstyle=\color{blue}, |
| 19 | + extendedchars=true, |
| 20 | + keepspaces=true, |
| 21 | + keywordstyle=\color{mygreen}, |
| 22 | + language=Fortran, |
| 23 | + numbers=left, |
| 24 | + numbersep=2pt, |
| 25 | + numberstyle=\tiny\color{gray}, |
| 26 | + rulecolor=\color{black}, |
| 27 | + showspaces=false, |
| 28 | + showstringspaces=false, |
| 29 | + showtabs=false, |
| 30 | + stepnumber=1, |
| 31 | + tabsize=2, |
| 32 | + title=\lstname |
| 33 | +} |
3 | 34 |
|
4 | 35 | \usepackage{setspace}
|
5 | 36 | \setstretch{1.5}
|
6 | 37 |
|
7 | 38 | \title{Fortran Standard Library}
|
8 | 39 | \author[]{Jeremie Vandenplas\\[3mm]
|
9 |
| -Bálint Aradi |
| 40 | +Bálint Aradi, |
10 | 41 | Izaak Beekman,
|
11 | 42 | Ondrej Certik,
|
12 | 43 | Milan Curcic,
|
|
25 | 56 | \begin{frame}[c]{Fortran Standard}
|
26 | 57 | \begin{itemize}
|
27 | 58 | \item Published by the International Organization for Standardization (ISO)
|
28 |
| - \item Can be extended with new intrinsic procedures and modules |
| 59 | + \item Limited set of intrinsic procedures |
| 60 | + \item Possibility to add new intrinsic procedures and modules |
29 | 61 | \begin{itemize}
|
30 | 62 | \item After standardization and implementation in compilers
|
31 | 63 | \end{itemize}
|
32 |
| - \item Issue: no Standard Library |
| 64 | + \item No Standard Library |
33 | 65 | \end{itemize}
|
| 66 | + \center |
| 67 | + \textcolor{red}{\textbf{Consequence: we all reinvent the wheel continuously!}} |
34 | 68 | \end{frame}
|
35 | 69 |
|
36 | 70 |
|
37 | 71 | \begin{frame}[c]{Aim}
|
38 | 72 | \center
|
39 |
| - Develop and provide\\ |
40 |
| - a community driven and agreed upon de facto\\ |
41 |
| - "standard" library \\ |
| 73 | + \Large |
| 74 | + \textcolor{blue}{Develop} and \textcolor{blue}{provide}\\ |
| 75 | + a \textcolor{blue}{community} driven and agreed upon de facto\\ |
| 76 | + \textcolor{blue}{standard library}\\ |
42 | 77 | for Modern Fortran
|
43 | 78 | \end{frame}
|
44 | 79 |
|
45 | 80 |
|
46 |
| -\begin{frame}[c]{Fortran Standard Library} |
| 81 | +\begin{frame}[c]{Fortran Standard Library - stdlib} |
| 82 | + \Large |
47 | 83 | \begin{itemize}
|
48 |
| - \item Project of the new Fortran-lang community |
49 |
| - \item Abbreviation: stdlib |
| 84 | + \item One of the four pillars of \textcolor{blue}{fortran-lang} |
| 85 | + \item \textcolor{blue}{MIT} License |
50 | 86 | \item GitHub: https://github.com/fortran-lang/stdlib
|
51 |
| - \item Website: https://stdlib.fortran-lang.org |
52 |
| - \item MIT License |
| 87 | + \item API docs: https://stdlib.fortran-lang.org |
53 | 88 | \end{itemize}
|
54 | 89 | \end{frame}
|
55 | 90 |
|
56 | 91 |
|
57 | 92 | \begin{frame}[t]{General scope}
|
58 |
| - Similar to SciPy or to the default built-in Matlab scientific environment |
| 93 | + Similar to \textcolor{blue}{SciPy} or |
| 94 | + to the default built-in \textcolor{blue}{Matlab scientific environment} |
59 | 95 |
|
60 |
| - Among others: |
| 96 | + \textcolor{mygreen}{Three} topics |
61 | 97 | \begin{itemize}
|
62 |
| - \item Algorithms |
| 98 | + \item \textcolor{blue}{Algorithms} |
63 | 99 | \begin{itemize}
|
64 | 100 | \item Merging, searching, sorting, ...
|
65 | 101 | \end{itemize}
|
66 |
| - \item Mathematics |
| 102 | + \item \textcolor{blue}{Mathematics} |
67 | 103 | \begin{itemize}
|
68 | 104 | \item Linear algebra, sparse matrices, special functions, fast Fourier transform, random numbers, statistics, ordinary differential equations, numerical integration, optimization, ...
|
69 | 105 | \end{itemize}
|
70 |
| - \item Utilities |
| 106 | + \item \textcolor{blue}{Utilities} |
71 | 107 | \begin{itemize}
|
72 | 108 | \item Containers, strings, files, OS/environment integration, unit testing, assertions, logging, ...
|
73 | 109 | \end{itemize}
|
74 | 110 | \end{itemize}
|
75 | 111 | \end{frame}
|
76 | 112 |
|
77 | 113 |
|
78 |
| -\begin{frame}[c]{GitHub} |
79 |
| - |
| 114 | +\begin{frame}[c]{Currently implemented in stdlib} |
| 115 | + \begin{block}{~\vspace{0.5cm}} |
| 116 | + \vspace{-0.8cm} |
| 117 | + \begin{tabular}{ccc} |
| 118 | + \textcolor{white}{\bf Module} &\textcolor{white}{\bf Description} &\textcolor{white}{\bf \# procedures} \\ |
| 119 | + ascii & & 16\\ |
| 120 | + error & Catching and handling errors & 2\\ |
| 121 | + io & Input/output helper and convenience & 3\\ |
| 122 | + kinds & & -\\ |
| 123 | + linalg & Linear algebra & 3\\ |
| 124 | + optval & Fallback value for optional arguments & 1\\ |
| 125 | + quadrature & Numerical integration & 4\\ |
| 126 | + stats & Descriptive statistics & 5\\ |
| 127 | + system & & 1 \\ |
| 128 | + \end{tabular} |
| 129 | + \end{block} |
80 | 130 | \end{frame}
|
81 | 131 |
|
82 | 132 |
|
83 |
| -\begin{frame}[c]{Website} |
84 |
| - \begin{itemize} |
85 |
| - \item Automatically generated by FORD %https://github.com/Fortran-FOSS-Programmers/ford |
86 |
| - \end{itemize} |
| 133 | +\begin{frame}[fragile]{Examples} |
| 134 | + \begin{lstlisting} |
| 135 | + ... |
| 136 | + use stdlib_experimental_io, only: loadtxt, savetxt |
| 137 | + use stdlib_experimental_linalg, only: diag |
| 138 | + use stdlib_experimental_stats, only: moment |
| 139 | + ... |
| 140 | + real, allocatable :: A(:,:) |
| 141 | + call loadtxt('example.dat', A) |
| 142 | + ... |
| 143 | + print*, diag(A) |
| 144 | + ... |
| 145 | + call savetxt('moment.dat',& |
| 146 | + moment(A, order = 3, dim = 1, mask = (A > 5.))) |
| 147 | + ... \end{lstlisting} |
87 | 148 | \end{frame}
|
88 | 149 |
|
89 | 150 |
|
90 |
| -\begin{frame}[c]{Currently implemented} |
91 |
| - \begin{itemize} |
92 |
| - \item |
93 |
| - \end{itemize} |
| 151 | +\begin{frame}[fragile]{Example - optval} |
| 152 | + \begin{lstlisting} |
| 153 | + ... |
| 154 | + use stdlib_experimental_optval, only: optval |
| 155 | + ... |
| 156 | + real function root(x, n) |
| 157 | + real, intent(in) :: x |
| 158 | + integer, intent(in), optional :: n |
| 159 | + root = x**(1.0/optval(n, 2)) |
| 160 | + end function |
| 161 | + \end{lstlisting} |
| 162 | +\end{frame} |
| 163 | + |
| 164 | + |
| 165 | +\begin{frame}[c]{API docs (https://stdlib.fortran-lang.org)} |
| 166 | + \begin{center} |
| 167 | + \includegraphics[width=0.9\textwidth]{apidocsstdlib} |
| 168 | + \end{center} |
94 | 169 | \end{frame}
|
95 | 170 |
|
96 | 171 |
|
97 |
| -\begin{frame}[c]{Many contributors on GitHub} |
| 172 | +\begin{frame}[c]{API docs (https://stdlib.fortran-lang.org)} |
| 173 | + Automatically generated by \textcolor{blue}{FORD} %https://github.com/Fortran-FOSS-Programmers/ford |
98 | 174 | \begin{itemize}
|
99 |
| - \item $>$ 110 issues |
100 |
| - \begin{itemize} |
101 |
| - \item $>$ xxx participants |
102 |
| - \end{itemize} |
103 |
| - \item $>$ 100 pull requests |
| 175 | + \item Source codes |
| 176 | + \item \textcolor{blue}{Markdown specs} for all procedures |
104 | 177 | \begin{itemize}
|
105 |
| - \item $>$ 15 contributors |
| 178 | + \item \textit{Description} |
| 179 | + \item \textit{Syntax} |
| 180 | + \item \textit{Arguments} |
| 181 | + \item \textit{Output} / \textit{Return value} |
| 182 | + \item \textit{Example} |
106 | 183 | \end{itemize}
|
| 184 | + \end{itemize} |
| 185 | + |
| 186 | +\end{frame} |
| 187 | + |
| 188 | + |
| 189 | +\begin{frame}[c]{Contributions through GitHub} |
| 190 | + https://github.com/fortran-lang/stdlib\\ |
| 191 | + \textcolor{blue}{Source codes} |
| 192 | + \begin{itemize} |
| 193 | + \item 16 contributors |
| 194 | + \item $>$ 100 Pull Requests |
| 195 | + \end{itemize} |
| 196 | + \textcolor{blue}{Issues / ideas / comments} |
| 197 | + \begin{itemize} |
| 198 | + \item 47 contributors |
| 199 | + \item $>$ 110 GitHub issues |
107 | 200 | \end{itemize}
|
108 | 201 | \end{frame}
|
109 | 202 |
|
110 | 203 |
|
111 | 204 | \begin{frame}[c]{How to contribute to stdlib?}
|
112 |
| - Through GitHub |
| 205 | + \textcolor{blue}{Through GitHub}\\ |
113 | 206 | \begin{itemize}
|
114 | 207 | \item Issues
|
115 |
| - \item Pull Requests (codes) |
| 208 | + \begin{itemize} |
| 209 | + \item Proposition of ideas, issues, comments |
| 210 | + \end{itemize} |
| 211 | + \item Pull Requests |
| 212 | + \begin{itemize} |
| 213 | + \item To contribute to the source code and specs |
| 214 | + \end{itemize} |
116 | 215 | \end{itemize}
|
| 216 | + \textcolor{blue}{Code of Conduct}\\ |
| 217 | +\end{frame} |
117 | 218 |
|
118 |
| - Workflow for contributing to the code: |
| 219 | +\begin{frame}[c]{Contributing to the source code?} |
| 220 | + \textcolor{blue}{Workflow} |
119 | 221 | \begin{enumerate}
|
120 |
| - \item Idea |
121 |
| - \item API |
122 |
| - \item Specification |
123 |
| - \item Implementation |
124 |
| - \item Release |
| 222 | + \item Proposition of an \textbf{idea} |
| 223 | + \item Proposition of the \textbf{API} |
| 224 | + \item Discussion of the \textbf{specs} |
| 225 | + \item Pull request of an \textbf{implementation} in the experimental namespace + associated unit tests |
| 226 | + \item Stable \textbf{release} of procedures in the experimental namespace |
125 | 227 | \end{enumerate}
|
126 | 228 | \end{frame}
|
127 | 229 |
|
| 230 | + |
128 | 231 | \begin{frame}[c]{Acknowledgments}
|
129 | 232 |
|
130 | 233 | \end{frame}
|
131 | 234 |
|
| 235 | +\begin{frame}[c]{} |
| 236 | + \centering \Huge |
| 237 | + \emph{Thank you!} |
| 238 | +\end{frame} |
| 239 | + |
132 | 240 | \end{document}
|
0 commit comments