aboutsummaryrefslogtreecommitdiffstats
path: root/src/node.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-10-03 17:09:44 +0000
committerDavid Robillard <d@drobilla.net>2014-10-03 17:09:44 +0000
commit164337b78f11c7fdb5881df6262ea0d02a1cad6f (patch)
tree0a0904e03e37388982f5d1f28bd9d52e7382d848 /src/node.c
parentcf50a460fcc84687d18764a61cf79d662766414b (diff)
downloadserd-164337b78f11c7fdb5881df6262ea0d02a1cad6f.tar.gz
serd-164337b78f11c7fdb5881df6262ea0d02a1cad6f.tar.bz2
serd-164337b78f11c7fdb5881df6262ea0d02a1cad6f.zip
Remove dependence on fmax() to avoid portability issues.
git-svn-id: http://svn.drobilla.net/serd/trunk@476 490d8e77-9747-427b-9fa3-0b8f29cee8a0
Diffstat (limited to 'src/node.c')
-rw-r--r--src/node.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/node.c b/src/node.c
index 921b05de..6b35dd79 100644
--- a/src/node.c
+++ b/src/node.c
@@ -216,6 +216,13 @@ serd_node_new_uri(const SerdURI* uri, const SerdURI* base, SerdURI* out)
return node;
}
+static inline unsigned
+serd_digits(double abs)
+{
+ const double lg = ceil(log10(abs + 1.0));
+ return lg < 1.0 ? 1U : (unsigned)lg;
+}
+
SERD_API
SerdNode
serd_node_new_decimal(double d, unsigned frac_digits)
@@ -225,7 +232,7 @@ serd_node_new_decimal(double d, unsigned frac_digits)
}
const double abs_d = fabs(d);
- const unsigned int_digits = (unsigned)fmax(1.0, ceil(log10(abs_d + 1)));
+ const unsigned int_digits = serd_digits(abs_d);
char* buf = (char*)calloc(int_digits + frac_digits + 3, 1);
SerdNode node = { (const uint8_t*)buf, 0, 0, 0, SERD_LITERAL };
const double int_part = floor(abs_d);
@@ -276,7 +283,7 @@ SerdNode
serd_node_new_integer(int64_t i)
{
int64_t abs_i = (i < 0) ? -i : i;
- const unsigned digits = fmax(1.0, ceil(log10((double)abs_i + 1)));
+ const unsigned digits = serd_digits(abs_i);
char* buf = (char*)calloc(digits + 2, 1);
SerdNode node = { (const uint8_t*)buf, 0, 0, 0, SERD_LITERAL };