| 118 | }; |
| 119 | |
| 120 | vtkSmartPointer<vtkDataArray> computeL1Norm(vtkDataArray* array) |
| 121 | { |
| 122 | auto norm = vtkSmartPointer<vtkDoubleArray>::New(); |
| 123 | norm->SetNumberOfTuples(array->GetNumberOfTuples()); |
| 124 | vtkSMPTools::For(0, array->GetNumberOfTuples(), |
| 125 | [&norm, array](vtkIdType begin, vtkIdType end) |
| 126 | { |
| 127 | int numComponents = array->GetNumberOfComponents(); |
| 128 | std::vector<double> tuple(numComponents); |
| 129 | for (vtkIdType ii = begin; ii < end; ++ii) |
| 130 | { |
| 131 | array->GetTuple(ii, tuple.data()); |
| 132 | double sum = 0; |
| 133 | for (int jj = 0; jj < numComponents; ++jj) |
| 134 | { |
| 135 | sum += absolute(tuple[jj]); |
| 136 | } |
| 137 | norm->SetTuple1(ii, sum); |
| 138 | } |
| 139 | }); |
| 140 | return norm; |
| 141 | } |
| 142 | |
| 143 | vtkSmartPointer<vtkDataArray> computeL2Norm(vtkDataArray* array) |
| 144 | { |
no test coverage detected