Skip to content
Snippets Groups Projects
Commit b9071157 authored by Uwe Schulzweida's avatar Uwe Schulzweida
Browse files

Moved for loop to diff().

parent 233f069b
No related branches found
No related tags found
No related merge requests found
Pipeline #20849 passed
......@@ -61,21 +61,33 @@ diff_kernel(bool hasMissvals, const double v1, const double v2, const double mis
}
static void
diff_kernel(size_t i, bool hasMissvals, const Field &field1, const Field &field2, size_t &ndiff, bool &dsgn, bool &zero,
double &absm, double &relm)
diff(size_t gridsize, bool hasMissvals, const Field &field1, const Field &field2, size_t &ndiff, bool &dsgn, bool &zero,
double &absm, double &relm)
{
if (memtype_is_float_float(field1.memType, field2.memType))
diff_kernel(hasMissvals, field1.vec_f[i], field2.vec_f[i], field1.missval, field2.missval, ndiff, dsgn, zero, absm, relm);
{
for (size_t i = 0; i < gridsize; ++i)
diff_kernel(hasMissvals, field1.vec_f[i], field2.vec_f[i], field1.missval, field2.missval, ndiff, dsgn, zero, absm, relm);
}
else if (memtype_is_float_double(field1.memType, field2.memType))
diff_kernel(hasMissvals, field1.vec_f[i], field2.vec_d[i], field1.missval, field2.missval, ndiff, dsgn, zero, absm, relm);
{
for (size_t i = 0; i < gridsize; ++i)
diff_kernel(hasMissvals, field1.vec_f[i], field2.vec_d[i], field1.missval, field2.missval, ndiff, dsgn, zero, absm, relm);
}
else if (memtype_is_double_float(field1.memType, field2.memType))
diff_kernel(hasMissvals, field1.vec_d[i], field2.vec_f[i], field1.missval, field2.missval, ndiff, dsgn, zero, absm, relm);
{
for (size_t i = 0; i < gridsize; ++i)
diff_kernel(hasMissvals, field1.vec_d[i], field2.vec_f[i], field1.missval, field2.missval, ndiff, dsgn, zero, absm, relm);
}
else
diff_kernel(hasMissvals, field1.vec_d[i], field2.vec_d[i], field1.missval, field2.missval, ndiff, dsgn, zero, absm, relm);
{
for (size_t i = 0; i < gridsize; ++i)
diff_kernel(hasMissvals, field1.vec_d[i], field2.vec_d[i], field1.missval, field2.missval, ndiff, dsgn, zero, absm, relm);
}
}
static void
use_real_part(const size_t gridsize, Field &field)
use_real_part(size_t gridsize, Field &field)
{
if (field.memType == MemType::Float)
for (size_t i = 0; i < gridsize; ++i) field.vec_f[i] = field.vec_f[i * 2];
......@@ -242,10 +254,7 @@ Diff(void *process)
auto dsgn = false, zero = false;
double absm = 0.0, relm = 0.0;
for (size_t i = 0; i < gridsize; ++i)
{
diff_kernel(i, hasMissvals, field1, field2, ndiff, dsgn, zero, absm, relm);
}
diff(gridsize, hasMissvals, field1, field2, ndiff, dsgn, zero, absm, relm);
if (!Options::silentMode || Options::cdoVerbose)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment