Your task is to take the temperature readings and generate for each core:
- A piecewise linear interpolation.
- A global linear least squares approximation.
- (Optional) A cubic spline (or other non-linear) interpolation.
2 Program Arguments & Execution
Your program must accept an input filename as the first command line argument. Your program must NOT prompt the user for a filename.
2.1 Input Format
Data takes the form of temperatures in a txt
file. All data points are whitespace delimited. For example, if I had 5 temperature readings:
Example 1: Sample Input with Labels
+61.0C +63.0C +50.0C +58.0C
+80.0C +81.0C +68.0C +77.0C
+62.0C +63.0C +52.0C +60.0C
+83.0C +82.0C +70.0C +79.0C
+68.0C +69.0C +58.0C +65.0C
Example 2: Sample Input without Labels
61.0 63.0 50.0 58.0 80.0 81.0 68.0 77.0 62.0 63.0 52.0 60.0 83.0 82.0 70.0 79.0 68.0 69.0 58.0 65.0
would be a possible input files. Each line represents temperature readings from 4 processor cores. Process each temperature column independently. Readings are taken every 30 seconds. In this example:
- line 1 is 0 sec
- line 2 is 30 sec,
- line 3 is 60 sec.
- line 4 is 90 sec.
- line 5 is 120 sec.
- line 6 is 150 sec.
- line 7 is 180 sec.
Your first step should be to pre-process this data into a usable form. Conceptually, you need the data in the following format:
This table is a conceptual visualization of the data. You may select any combination data structures, e.g., ADTS (classes or structs), arrays, lists, vectors, or maps.
Time (sec)Core 0Core 1Core 2Core 3061.063.050.058.03080.081.068.077.06062.063.052.060.012083.082.070.079.018068.069.058.065.0
2.3 Output Format
All output must be written to text files (one file pre core). Each line must take the form:
xk<=x<xk+1xk<=x<xk+1; yi=c0+c1xyi=c0+c1x ; type
where
- xkxk and xk+1xk+1 are the domain in which ykyk is applicable
- ykyk is the kthkth function
- type is either least-squares or interpolation
You will have:
- n1n1 interpolation lines for each core
- exactly one least squares approximation line for each core
For the example data in described in you would generate 4 output files.
{basename}-core-0.{txt}
{basename}-core-1.{txt}
{basename}-core-2.{txt}
{basename}-core-3.{txt}
3 Sample Execution & Output
3.2 Sample Output
The following is an example of piecewise linear interpolation output for a single core.
4.1 Documentation Requirements
All code must be properly and fully documented using a language appropriate comment style. All functions (including parameters and return types) must be documented.
- Doxygen can be used for C++, Java, or JavaScript. Consider the following Doxygen Example:
Example 3: C++ Doxygen Documentation/** * Retrieve the value stored in three selected Cells * * @param cell1Id numeric id representing the 1st desired cell * @param cell2Id numeric id representing the 2nd desired cell * @param cell3Id numeric id representing the 3rd desired cell * * @return value stored in the Cell * * @pre (cell1Id > 0 && cell1Id < 10) && * (cell2Id > 0 && cell2Id < 10) && * (cell3Id > 0 && cell3Id < 10) */ CellTriple get3Cells(int cell1Id, int cell2Id, int cell3Id) const;