Timeline
A timeline made in Tikz.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
%%% Full, compilable sources are on Github:
%%% https://github.com/bvieuble/TeXFantasy/tree/main/illustrations/fig1
%%% Appears in my lecture ``Mixed precision iterative refinement'' (2023).
% Compiled with XeLaTeX
% TeX-command-extra-options: "-shell-escape"
\documentclass[convert={outext=.png},border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,arrows.meta}
\input{color_theme.tex}
\begin{document}
\tikzstyle{descript} = [text=black,align=center, minimum height=1.8cm,
align=center, outer sep=0pt,font=\footnotesize]
\tikzstyle{activity} = [align=center,outer sep=1pt]
\begin{tikzpicture}[very thick, black, x=0.7cm]\small
%% Coordinates
\coordinate (O) at (-1.5,0);
\coordinate (P1) at (4,0);
\coordinate (P2) at (10,0);
\coordinate (P3) at (13,0);
\coordinate (F) at (15,0);
\coordinate (E1) at (-0.5,0);
\coordinate (E2) at (2.7,0);
\coordinate (E3) at (5.5,0);
\coordinate (E4) at (11.2,0);
\coordinate (E5) at (13.5,0);
%% Filled regions
\fill[color=myblue-light] rectangle ($(O)+(1,0)$) -- (P1) -- ($(P1)+(0,1)$)
-- ($(O)+(1,1)$);
\fill[color=mypurple-light] rectangle (P1) -- (P2) -- ($(P2)+(0,1)$) --
($(P1)+(0,1)$); % Work
\fill[color=myorange-light] rectangle (P2) -- (P3) -- ($(P3)+(0,1)$) --
($(P2)+(0,1)$); % Current work
\shade[left color=myred-mild] ($(P3)$) rectangle ($(F)+(0,1)$);
%% Text inside filled regions
\draw ($(P1)+(-2.5,0.5)$) node[activity,myblue] {\textbf{Extra precision}};
\draw ($(P2)+(-3,0.5)$) node[activity,mypurple] {\textbf{Fixed precision}};
\draw ($(P3)+(-1.5,0.5)$) node[activity,myorange]
{\textbf{Low precision}};
%% Description
\node[descript,fill=myblue-light!70,text=myblue,rounded corners] (D1) at
($(P1)+(-3.5,-2.5)$) {
\textbf{Better accuracy}\\
\scriptsize \color{black}Extra precision \\[-4pt] \scriptsize
\color{black}for the computation \\[-4pt] \scriptsize \color{black}of
the residual.\\[-4pt]};
\node[descript,fill=mypurple-light!70,text=mypurple,rounded corners] (D2)
at ($(P2)+(-5,-2.5)$) {
\textbf{Recover stability}\\
\scriptsize \color{black}Residual, correction \\[-4pt] \scriptsize
\color{black}equation, and update, \\[-4pt] \scriptsize \color{black}all
computed \\[-4pt] \scriptsize \color{black}in working precision.};
\node[descript,fill=myorange-light!70,text=myorange,rounded corners] (D3)
at ($(P3)+(-3.5,-2.5)$) {
\textbf{Get performance}\\
\scriptsize \color{black}Solver run \\[-4pt]
\scriptsize \color{black}in low precision \\[-4pt] \scriptsize
\color{black}for the correction \\[-4pt] \scriptsize
\color{black}equation.};
\node[descript,fill=myred-light!70,text=myred,rounded corners] (D4) at
($(F)+(-1.5,-2.5)$) {
\textbf{All in one}\\
\scriptsize \color{black}Extra precision \\[-4pt] \scriptsize
\color{black}on the residual \\[-4pt] \scriptsize \color{black}and low on
the \\[-4pt] \scriptsize \color{black}solver.
};
%% Events
\draw[<-,thick,color=black,dashed] ($(E1)+(0,0.1)$) -- ($(E1)+(0,1.5)$)
node [above=0pt,align=center,black] {\scriptsize \textbf{1948} \\
\scriptsize First \\[-4pt]\scriptsize appearance.};
\draw[<-,thick,color=black,dashed] ($(E2)+(0,0.1)$) -- ($(E2)+(0,1.5)$)
node [above=0pt,align=center,black] {\scriptsize \textbf{1963} \\
\scriptsize First analysis. \\[-4pt]};
\draw[<-,thick,color=black,dashed] ($(E3)+(0,0.1)$) -- ($(E3)+(0,1.5)$)
node [above=0pt,align=center,black] {\scriptsize \textbf{1977} \\
\scriptsize Analysis in \\[-4pt] \scriptsize fixed precision.};
\draw[<-,thick,color=black,dashed] ($(E4)+(0,0.1)$) -- ($(E4)+(0,1.5)$)
node [above=0pt,align=center,black] {\scriptsize \textbf{2006} \\
\scriptsize Low precision \\[-4pt] \scriptsize factorization.};
\draw[<-,thick,color=black,dashed] ($(E5)+(0,0.1)$) -- ($(E5)+(0,1.5)$)
node [above=0pt,align=center,black] {\scriptsize \textbf{2018} \\
\scriptsize Generalized \\[-4pt] \scriptsize analysis.};
%% Arrows
\path[->,color=myblue] ($(P1)+(-3,-0.1)$) edge [out=-90, in=90]
($(D1)+(0,1)$);
\path[->,color=mypurple] ($(P2)+(-3,-0.1)$) edge [out=-90, in=90]
($(D2)+(0,1)$);
\path[->,color=myorange]($(P3)+(-2,-0.1)$) edge [out=-70, in=90]
($(D3)+(0,1)$);
\path[->,color=myred]($(F)+(-1.5,-0.1)$) edge [out=-140, in=90]
($(D4)+(0,1)$);
\draw[->] (O) -- (F);
%% Ticks
\foreach \x in {0,2,...,14}
\draw(\x,3pt) -- (\x,-3pt);
%% Labels
\foreach \i \j in
{0/1950,2/1960,4/1970,6/1980,8/1990,10/2000,12/2010,14/2020}{
\draw (\i,0) node[below=3pt] {\j} ;
}
\end{tikzpicture}
\end{document}