## 4 Experiments
### Running-Time Performance
It should be noted that the instance library available to the target device provide only double-precision floating point exponent and dividing operators (\(dexp\) and \(ddiv\)), so \(fperst\) and \(fptrunc\) operators are necessitated for data format transforming between \(float\), which is pre-defined, and \(double\) data. According to (19), the latency cost of this optimized implementation is \(L_{\mathrm{opt}}=663,320\) cycles. The running time costs of RTL implementations can be estimated as \(T_{\mathrm{opt}}=P_{\mathrm{opt}}\times L_{\mathrm{opt}}\), where \(P_{\mathrm{opt}}\) is the estimated clock period. It should be noted that the value of \(P_{\mathrm{opt}}\) varies with the optimizing depth \(D_{\mathrm{opt}}\). In this case, the evaluation report for Vivado HLS indicates that \(P_{\mathrm{opt}}=8.63\) ns at \(D_{\mathrm{opt}}=32\), so its running time is \(T_{\mathrm{opt}}=8.63\) ns \(\times\) 663,320 cycles \(=5.72\) ms.  
Figure 8: Schedule result: Lines 7–9 of Algorithm 4. Figure 10: Schedule result: Lines 18–24 of Algorithm 4. Figure 9: Schedule result: Lines 14–16 of Algorithm 4. For the purpose of unbiased evaluation results, we compared the running-time performance of the final implementation with multiple references. Table 7 specifies their developing environments. _capt_matlab_ is the very original version for algorithm verifications. _capt_cpp_ is developed from the Matlab-to-C transforming version, which is used as the input of the high-level synthesis process. _capt_whls_ori_ is generated from the _capt_cpp_ code without any optimizations. _capt_whls_opt_Dopt_ (\(D_{\text{opt}}=4,8,16\), or 32) are the versions optimized from _capt_whls_ori_ with different optimizing depths. _capt_whls_opt_32_ is the proposed CAPT prototype of this paper. Figure 11 plots the acceleration ratios over the different implementing versions, in which _capt_matlab_ is set as the base. It illustrates that the C++ version achieves a speedup of 1.8\(\times\), whereas the original VHLS version 0.97\(\times\). This result means that synthesizing the Matlab code directly down to register-transfer levels do not obtain acceleration gains corresponding to today's commonly-used processors and developing environments. However, the optimizing methods used in this paper effectively improve the running-time efficiency of the VHLS implementations. Comparing with _capt_whls_ori_, the optimizing forms made in this paper accelerate the implementations by 2.36\(\times\), 3.85\(\times\), 6.50\(\times\) and 11.28\(\times\) at \(D_{\text{opt}}=4,8,16\) and 32. Comparing with the two CPU-based implementations _capt_matlab_ and _capt_cpp_, the proposed CAPT prototype _capt_whls_opt_32_ achieves speedups of 10.89\(\times\) and 6.02\(\times\), respectively. Meanwhile, it should be noted that the VHLS implementations can be further accelerated by raising the optimizing depth value, but that will cost more hardware resources. Within the device xc72020 cl84-1 used in this paper, we have maximized the resource cost. If desired, the implementation can be further accelerated by using a bigger device. \begin{table}
\begin{tabular}{l l l l l} \hline \hline
**Implementations** & **Clock Period (ns)** & **Routines** & **Environments** & **Devices** \\ \hline _capt\_matlab_ & 0.55 & Algorithm 2 & Matlab 2017b Win10-64 bit & Intel Core i7, 1.80 GHz 32 GB RAM \\ \hline _capt\_cpp_ & 0.55 & Algorithm 3 & VS 2015 Win10-64 bit & Intel Core i7, 1.80 GHz 32 GB RAM \\ \hline _capt\_whls\_ori_ & 8.62 & & & \\ \hline _capt\_whls\_opt\_4_ & 8.63 & & & \\ \hline _capt\_whls\_opt\_8_ & 8.63 & & & \\ \hline _capt\_whls\_opt\_16_ & 8.63 & & & \\ \hline _capt\_whls\_opt\_32_ & 8.63 & & & \\ \hline \hline \end{tabular}
\end{table} 
Table 7: Implementation specifications II. Figure 11: Running time comparison (see Table 7 for the definition of acronyms in this figure).