summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Farago <sensej007@email.cz>2019-04-08 09:16:23 +0200
committerTomas Farago <sensej007@email.cz>2019-04-08 10:27:28 +0200
commit2f048faead24e40d854faf4f91a5d76f66318f7d (patch)
treefe5c7a238bbe030809d9110063ca0a26f0b3084a
parentd575d6e4f0fbc65ccbe7f72fe0d45bac4dab5873 (diff)
downloadufo-filters-2f048faead24e40d854faf4f91a5d76f66318f7d.tar.gz
ufo-filters-2f048faead24e40d854faf4f91a5d76f66318f7d.tar.bz2
ufo-filters-2f048faead24e40d854faf4f91a5d76f66318f7d.tar.xz
ufo-filters-2f048faead24e40d854faf4f91a5d76f66318f7d.zip
phase retrieval: Don't do unnecessary math
-rw-r--r--src/kernels/phase-retrieval.cl12
-rw-r--r--src/ufo-retrieve-phase-task.c2
2 files changed, 4 insertions, 10 deletions
diff --git a/src/kernels/phase-retrieval.cl b/src/kernels/phase-retrieval.cl
index 99de3c5..28c3e6b 100644
--- a/src/kernels/phase-retrieval.cl
+++ b/src/kernels/phase-retrieval.cl
@@ -25,17 +25,11 @@
const int height = get_global_size(1); \
int idx = get_global_id(0); \
int idy = get_global_id(1); \
- if (idx >= width || idy >= height) \
- return; \
- if (idx == 0 && idy == 0) { \
- output[0] = 0.5f * pow(10, regularize_rate); \
- return; \
- } \
- float n_idx = (idx >= floor((float) width / 2.0f)) ? idx - width : idx; \
- float n_idy = (idy >= floor((float) height / 2.0f)) ? idy - height : idy; \
+ float n_idx = (idx >= width >> 1) ? idx - width : idx; \
+ float n_idy = (idy >= height >> 1) ? idy - height : idy; \
n_idx = n_idx / width; \
n_idy = n_idy / height; \
- float sin_arg = prefac * (n_idy * n_idy + n_idx * n_idx) / 2.0f; \
+ float sin_arg = prefac * (n_idy * n_idy + n_idx * n_idx); \
#define COMMON_SETUP \
COMMON_SETUP_TIE; \
diff --git a/src/ufo-retrieve-phase-task.c b/src/ufo-retrieve-phase-task.c
index 66036b9..0ce5e26 100644
--- a/src/ufo-retrieve-phase-task.c
+++ b/src/ufo-retrieve-phase-task.c
@@ -104,7 +104,7 @@ ufo_retrieve_phase_task_setup (UfoTask *task,
priv->context = ufo_resources_get_context (resources);
lambda = 6.62606896e-34 * 299792458 / (priv->energy * 1.60217733e-16);
- priv->prefac = 2 * G_PI * lambda * priv->distance / (priv->pixel_size * priv->pixel_size);
+ priv->prefac = G_PI * lambda * priv->distance / (priv->pixel_size * priv->pixel_size);
priv->kernels[METHOD_TIE] = ufo_resources_get_kernel (resources, "phase-retrieval.cl", "tie_method", NULL, error);
priv->kernels[METHOD_CTF] = ufo_resources_get_kernel (resources, "phase-retrieval.cl", "ctf_method", NULL, error);