## 2 Materials and Methods
\begin{table}
\begin{tabular}{c c c c} \hline  & **Averages** & **Maximum** & **Mean-Square Deviation** \\ \hline \(x\) (\(m\)) & 6.360759 \(\times\)\(10^{-5}\) & 2.800000 \(\times\)\(10^{-4}\) & 5.157352 \(\times\)\(10^{-5}\) \\ \(y\) (\(m\)) & 4.904501 \(\times\)\(10^{-4}\) & 1.120000 \(\times\)\(10^{-3}\) & 1.785499 \(\times\)\(10^{-4}\) \\ \(z\) (\(m\)) & 4.464907 \(\times\)\(10^{-12}\) & 2.557150 \(\times\)\(10^{-11}\) & 3.791575 \(\times\)\(10^{-12}\) \\ \(v\) (m/s) & 3.767089 \(\times\)\(10^{-4}\) & 2.600000 \(\times\)\(10^{-3}\) & 3.074972 \(\times\)\(10^{-4}\) \\ \(v_{x}\) (m/s) & 7.743345 \(\times\)\(10^{-5}\) & 1.300000 \(\times\)\(10^{-3}\) & 8.600171 \(\times\)\(10^{-5}\) \\ \(v_{y}\) (m/s) & 4.592264 \(\times\)\(10^{-4}\) & 2.800000 \(\times\)\(10^{-3}\) & 3.087756 \(\times\)\(10^{-4}\) \\ \(v_{z}\) (m/s) & 7.391139 \(\times\)\(10^{-4}\) & 1.330000 \(\times\)\(10^{-3}\) & 2.169369 \(\times\)\(10^{-4}\) \\ \hline \end{tabular}
\end{table} 
Table 1: Absolute values of the differences between Euler and RK4 integrators for the \(10^{5}\) random test trajectories. location of the hitting point in \(y\) (forehand or backhand position) is not important for this numerical test. Initial height \(z\) was sampled from 0.4 m to \(-\)0.4 m. The direction of the initial velocity was determined in the following way: the horizontal angle was sampled between the limiting angles of the starting point to the net posts, and the elevation angle was chosen randomly. The spin axis (expressed as normalized spin vector) was also sampled randomly, which means topspin, backspin, and sidespin were included. The spinning of the ball is constant during the flight, as proven experimentally [16]. Monte Carlo studies using random numbers were done for the 38-mm ball with a weight of 2.5 g, used in tournaments until end of 2000, the actual 40-mm ball with 2.7 g, and a 44 mm-ball with a weight of 2.3 g, which was previously tested in Japan. For the 40-mm ball, an increase in net height of 1 and 3 cm was also analyzed. The analysis was aimed particularly at fast shots. Therefore, only balls passing the net within 30-cm height distance were accepted. The absolute values of the translational velocities were limited from 20 to 200 km/h, the spinning velocities from 0 to 150 turns/s (which is equal to 9000 turns/min). These values were previously determined empirically as limits for 38-mm balls [17]. A ball is counted as a successful ball if it passes the net within the height limit and hits the other side of the table-tennis table. The sampling of such a large number of initial conditions guarantees covering all possible combinations of initial parameters (positions, and translational and spinning velocities) for the different cases creating a successful stroke. Clearly, for different balls and net heights, the parameter space of initial conditions leading to successful strokes will be different. The database created in this study allowed also an analysis of this effect. For each case, 5 \(\times\) 10\({}^{8}\) initial conditions were sampled and trajectories calculated. Initially this was done on a Linux cluster with 32 cores. The run-time for each core was 20 h, resulting in a total run time of 640 h. Alternatively, GPU computing with CUDA was used on a Dell Precision T7500 desktop with NVIDIA Quadro FX3800. Here, only 3 h for the same calculation was needed. CUDA [8] is a programming interface using the parallel architecture of NVIDIA GPUs for general-purpose computing. CUDA library functions are provided as extensions of the C language, which allows for convenient and rather natural mapping of algorithms from C to CUDA. A compiler generates executable code for the  
Figure 2: Three-dimensional (3D) trajectory of a table-tennis ball. CUDA device. The central processing unit (CPU) identifies a CUDA device as a multi-core coprocessor. For the programmer, CUDA consists of a collection of threads running in parallel. A collection of threads, which is called a block, runs on a multiprocessor at a given time. The blocks form a so-called grid.