| 69 | |
| 70 | template <int N> |
| 71 | bool SplineFit<N>::fillmissing(bool linearfit) |
| 72 | { |
| 73 | for (int ii = 0; ii <= num; ++ii) |
| 74 | { |
| 75 | // Process in order num, 0, 1, ... num-1, so that all interior cases can |
| 76 | // be done by interpolation |
| 77 | int i = (ii == 0 ? num : ii - 1); |
| 78 | if (!missing[i]) |
| 79 | continue; |
| 80 | |
| 81 | int ia; |
| 82 | int ib; |
| 83 | int k = 0; |
| 84 | if (i == num) |
| 85 | { |
| 86 | for (int j = num - 1; j >= 0; --j) |
| 87 | { |
| 88 | if (!missing[j]) |
| 89 | { |
| 90 | if (k == 0) |
| 91 | ib = j; |
| 92 | else if (k == 1) |
| 93 | ia = j; |
| 94 | ++k; |
| 95 | if (k == 2) |
| 96 | break; |
| 97 | } |
| 98 | } |
| 99 | } |
| 100 | else if (i == 0) |
| 101 | { |
| 102 | for (int j = 1; j <= num; ++j) |
| 103 | { |
| 104 | if (!missing[j]) |
| 105 | { |
| 106 | if (k == 0) |
| 107 | ia = j; |
| 108 | else if (k == 1) |
| 109 | ib = j; |
| 110 | ++k; |
| 111 | if (k == 2) break; |
| 112 | } |
| 113 | } |
| 114 | } |
| 115 | else { |
| 116 | for (int j = i - 1; j >= 0; --j) |
| 117 | { |
| 118 | if (!missing[j] || j == 0) |
| 119 | { |
| 120 | ia = j; |
| 121 | ++k; |
| 122 | break; |
| 123 | } |
| 124 | } |
| 125 | for (int j = i + 1; j <= num; ++j) |
| 126 | { |
| 127 | if (!missing[j] || j == num) |
| 128 | { |
no test coverage detected