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
% Full code on github: https://github.com/bvieuble/TeXFantasy
% Appears in my lecture ``Mixed precision iterative refinement'' (2023).
\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}