From 35b56029cf6522a80ae18e5a0f9054ba38cf6972 Mon Sep 17 00:00:00 2001 From: jpekkila Date: Sat, 21 Dec 2019 13:21:56 +0200 Subject: [PATCH] Build failed with single-precision, added the correct casts to modelsolver.c --- src/utils/modelsolver.c | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/src/utils/modelsolver.c b/src/utils/modelsolver.c index 26d354a..4e6f0d1 100644 --- a/src/utils/modelsolver.c +++ b/src/utils/modelsolver.c @@ -49,6 +49,10 @@ typedef AcReal Scalar; typedef double Vector __attribute__((vector_size(4 * sizeof(double)))); #else typedef float Vector __attribute__((vector_size(4 * sizeof(float)))); + +#define fabs fabsf +#define exp expf +#define sqrt sqrtf #endif typedef struct { @@ -94,13 +98,15 @@ static inline Scalar first_derivative(const Scalar* pencil, const Scalar inv_ds) { #if STENCIL_ORDER == 2 - const Scalar coefficients[] = {0, 1. / 2.}; + const Scalar coefficients[] = {0, (Scalar)(1. / 2.)}; #elif STENCIL_ORDER == 4 - const Scalar coefficients[] = {0, 2.0 / 3.0, -1.0 / 12.0}; + const Scalar coefficients[] = {0, (Scalar)(2.0 / 3.0), (Scalar)(-1.0 / 12.0)}; #elif STENCIL_ORDER == 6 - const Scalar coefficients[] = {0, 3.0 / 4.0, -3.0 / 20.0, 1.0 / 60.0}; + const Scalar coefficients[] = {0, (Scalar)(3.0 / 4.0), (Scalar)(-3.0 / 20.0), + (Scalar)(1.0 / 60.0)}; #elif STENCIL_ORDER == 8 - const Scalar coefficients[] = {0, 4.0 / 5.0, -1.0 / 5.0, 4.0 / 105.0, -1.0 / 280.0}; + const Scalar coefficients[] = {0, (Scalar)(4.0 / 5.0), (Scalar)(-1.0 / 5.0), + (Scalar)(4.0 / 105.0), (Scalar)(-1.0 / 280.0)}; #endif #define MID (STENCIL_ORDER / 2) @@ -117,13 +123,17 @@ static inline Scalar second_derivative(const Scalar* pencil, const Scalar inv_ds) { #if STENCIL_ORDER == 2 - const Scalar coefficients[] = {-2., 1.}; + const Scalar coefficients[] = {-2, 1}; #elif STENCIL_ORDER == 4 - const Scalar coefficients[] = {-5.0 / 2.0, 4.0 / 3.0, -1.0 / 12.0}; + const Scalar coefficients[] = {(Scalar)(-5.0 / 2.0), (Scalar)(4.0 / 3.0), + (Scalar)(-1.0 / 12.0)}; #elif STENCIL_ORDER == 6 - const Scalar coefficients[] = {-49.0 / 18.0, 3.0 / 2.0, -3.0 / 20.0, 1.0 / 90.0}; + const Scalar coefficients[] = {(Scalar)(-49.0 / 18.0), (Scalar)(3.0 / 2.0), + (Scalar)(-3.0 / 20.0), (Scalar)(1.0 / 90.0)}; #elif STENCIL_ORDER == 8 - const Scalar coefficients[] = {-205.0 / 72.0, 8.0 / 5.0, -1.0 / 5.0, 8.0 / 315.0, -1.0 / 560.0}; + const Scalar coefficients[] = {(Scalar)(-205.0 / 72.0), (Scalar)(8.0 / 5.0), + (Scalar)(-1.0 / 5.0), (Scalar)(8.0 / 315.0), + (Scalar)(-1.0 / 560.0)}; #endif #define MID (STENCIL_ORDER / 2) @@ -142,16 +152,19 @@ cross_derivative(const Scalar* pencil_a, const Scalar* pencil_b, const Scalar in const Scalar inv_ds_b) { #if STENCIL_ORDER == 2 - const Scalar coefficients[] = {0, 1.0 / 4.0}; + const Scalar coefficients[] = {0, (Scalar)(1.0 / 4.0)}; #elif STENCIL_ORDER == 4 const Scalar coefficients[] = { - 0, 1.0 / 32.0, 1.0 / 64.0}; // TODO correct coefficients, these are just placeholders + 0, (Scalar)(1.0 / 32.0), + (Scalar)(1.0 / 64.0)}; // TODO correct coefficients, these are just placeholders #elif STENCIL_ORDER == 6 - const Scalar fac = (1. / 720.); - const Scalar coefficients[] = {0.0 * fac, 270.0 * fac, -27.0 * fac, 2.0 * fac}; + const Scalar fac = ((Scalar)(1. / 720.)); + const Scalar coefficients[] = {0 * fac, (Scalar)(270.0) * fac, (Scalar)(-27.0) * fac, + (Scalar)(2.0) * fac}; #elif STENCIL_ORDER == 8 - const Scalar fac = (1. / 20160.); - const Scalar coefficients[] = {0.0 * fac, 8064. * fac, -1008. * fac, 128. * fac, -9. * fac}; + const Scalar fac = ((Scalar)(1. / 20160.)); + const Scalar coefficients[] = {0 * fac, (Scalar)(8064.) * fac, (Scalar)(-1008.) * fac, + (Scalar)(128.) * fac, (Scalar)(-9.) * fac}; #endif #define MID (STENCIL_ORDER / 2)