Introduction
Introduction Statistics Contact Development Disclaimer Help
Add mod to blind-arithm - blind - suckless command-line video editing utility
git clone git://git.suckless.org/blind
Log
Files
Refs
README
LICENSE
---
commit c91c5cb8e892f1c19c970cef033cc03c9f47f98a
parent b3042abffb9f4e4c7edd16934af99716bcdc2901
Author: Mattias Andrée <[email protected]>
Date: Sun, 2 Jul 2017 17:30:22 +0200
Add mod to blind-arithm
Signed-off-by: Mattias Andrée <[email protected]>
Diffstat:
M man/blind-arithm.1 | 4 ++++
M src/blind-arithm.c | 1 +
M src/video-math.h | 16 ++++++++++++++++
3 files changed, 21 insertions(+), 0 deletions(-)
---
diff --git a/man/blind-arithm.1 b/man/blind-arithm.1
@@ -41,6 +41,10 @@ Calculate the product of the operands.
.B div
Divide the left-hand operand by the right-hand operand.
.TP
+.B mod
+Calculate the modulus of left-hand operand and the right-hand operand.
+The result is always non-negative.
+.TP
.B exp
Raise the left-hand operand to the
.IR n th
diff --git a/src/blind-arithm.c b/src/blind-arithm.c
@@ -16,6 +16,7 @@ typedef void (*process_func)(struct stream *left, struct stre…
X(sub, *lh -= rh, PIXFMT, TYPE)\
X(mul, *lh *= rh, PIXFMT, TYPE)\
X(div, *lh /= rh, PIXFMT, TYPE)\
+ X(mod, *lh = posmod(*lh, rh), PIXFMT, TYPE)\
X(exp, *lh = pow(*lh, rh), PIXFMT, TYPE)\
X(log, *lh = log2(*lh) / log2(rh), PIXFMT, TYPE)\
X(min, *lh = MIN(*lh, rh), PIXFMT, TYPE)\
diff --git a/src/video-math.h b/src/video-math.h
@@ -17,6 +17,20 @@ nnpowf(float a, float b)
return neg ? -a : a;
}
+static inline double
+posmod(double a, double b)
+{
+ double x = fmod(a, b);
+ return x < 0 ? x + b : x;
+}
+
+static inline float
+posmodf(float a, float b)
+{
+ float x = fmodf(a, b);
+ return x < 0 ? x + b : x;
+}
+
#define GENERIC(TYPE, FUNC, ...)\
TYPE: FUNC(__VA_ARGS__),\
TYPE *: FUNC(__VA_ARGS__),\
@@ -52,6 +66,8 @@ nnpowf(float a, float b)
#define g_isinf(...) MATH_GENERIC_1(isinf, __VA_ARGS__)
#define g_isfinite(...) MATH_GENERIC_1(isfinite, __VA_ARGS__)
#define nnpow(...) MATH_GENERIC_N(nnpow, __VA_ARGS__)
+#define mod(...) MATH_GENERIC_N(fmod, __VA_ARGS__)
+#define posmod(...) MATH_GENERIC_N(posmod, __VA_ARGS__)
#define srgb_encode(...) BLIND_GENERIC_1(srgb_encode, __VA_ARGS__)
#define srgb_decode(...) BLIND_GENERIC_1(srgb_decode, __VA_ARGS__)
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.