summaryrefslogtreecommitdiffstats
path: root/src/fluent-bit/lib/cmetrics/include/cmetrics/cmt_math.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-05 12:08:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-05 12:08:18 +0000
commit5da14042f70711ea5cf66e034699730335462f66 (patch)
tree0f6354ccac934ed87a2d555f45be4c831cf92f4a /src/fluent-bit/lib/cmetrics/include/cmetrics/cmt_math.h
parentReleasing debian version 1.44.3-2. (diff)
downloadnetdata-5da14042f70711ea5cf66e034699730335462f66.tar.xz
netdata-5da14042f70711ea5cf66e034699730335462f66.zip
Merging upstream version 1.45.3+dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/fluent-bit/lib/cmetrics/include/cmetrics/cmt_math.h')
-rw-r--r--src/fluent-bit/lib/cmetrics/include/cmetrics/cmt_math.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/fluent-bit/lib/cmetrics/include/cmetrics/cmt_math.h b/src/fluent-bit/lib/cmetrics/include/cmetrics/cmt_math.h
new file mode 100644
index 000000000..6f7e3f18f
--- /dev/null
+++ b/src/fluent-bit/lib/cmetrics/include/cmetrics/cmt_math.h
@@ -0,0 +1,52 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+
+/* CMetrics
+ * ========
+ * Copyright 2021-2022 The CMetrics Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef CMT_MATH_H
+#define CMT_MATH_H
+
+#include <inttypes.h>
+#include <string.h>
+
+union val_union {
+ uint64_t u;
+ double d;
+};
+
+/*
+ * This is not rocket-science and to make things easier we assume that operating on
+ * floating pointer numbers we will lose precision. So we just do simple casts.
+ */
+
+static inline uint64_t cmt_math_d64_to_uint64(double val)
+{
+ union val_union u;
+
+ u.d = val;
+ return u.u;
+}
+
+static inline double cmt_math_uint64_to_d64(uint64_t val)
+{
+ union val_union u;
+
+ u.u = val;
+ return u.d;
+}
+
+#endif