@@ -5,64 +5,107 @@ BEGIN_EXTERN_C
5
5
6
6
#define STATISTICS_FUNC (FUNC ) AF_MANGLE(Statistics, FUNC)
7
7
8
+ #define INSTANTIATE_MEAN (jtype, param ) \
9
+ JNIEXPORT jobject JNICALL STATISTICS_FUNC (afMeanAll##jtype)( \
10
+ JNIEnv * env, jclass clazz, jlong ref) { \
11
+ double real = 0 , img = 0 ; \
12
+ AF_CHECK (af_mean_all (&real, &img, ARRAY (ref))); \
13
+ jclass cls = env->FindClass (" com/arrayfire/" #jtype); \
14
+ jmethodID id = env->GetMethodID (cls, " <init>" , " (" #param " )V" ); \
15
+ jobject obj = env->NewObject (cls, id, real, img); \
16
+ return obj; \
17
+ }
18
+
19
+ #define INSTANTIATE_WEIGHTED (jtype, param, Name, name ) \
20
+ JNIEXPORT jobject JNICALL STATISTICS_FUNC (af##Name##All##jtype##Weighted)( \
21
+ JNIEnv * env, jclass clazz, jlong ref, jlong weightsRef) { \
22
+ double real = 0 , img = 0 ; \
23
+ AF_CHECK ( \
24
+ af_##name##_all_weighted (&real, &img, ARRAY (ref), ARRAY (weightsRef))); \
25
+ jclass cls = env->FindClass (" com/arrayfire/" #jtype); \
26
+ jmethodID id = env->GetMethodID (cls, " <init>" , " (" #param " )V" ); \
27
+ jobject obj = env->NewObject (cls, id, real, img); \
28
+ return obj; \
29
+ }
30
+
31
+ #define INSTANTIATE_ALL_REAL_WEIGHTED (Name, name ) \
32
+ JNIEXPORT jdouble JNICALL STATISTICS_FUNC (af##Name##AllWeighted)( \
33
+ JNIEnv * env, jclass clazz, jlong ref, jlong weightsRef) { \
34
+ double ret = 0 ; \
35
+ AF_CHECK ( \
36
+ af_##name##_all_weighted (&ret, NULL , ARRAY (ref), ARRAY (weightsRef))); \
37
+ return (jdouble)ret; \
38
+ }
39
+
40
+ #define INSTANTIATE_REAL_WEIGHTED (Name, name ) \
41
+ JNIEXPORT jlong JNICALL STATISTICS_FUNC (af##Name##Weighted)( \
42
+ JNIEnv * env, jclass clazz, jlong ref, jlong weightsRef, jint dim) { \
43
+ af_array ret = 0 ; \
44
+ AF_CHECK (af_##name##_weighted (&ret, ARRAY (ref), ARRAY (weightsRef), dim)); \
45
+ return JLONG (ret); \
46
+ }
47
+
48
+ #define INSTANTIATE_VAR (jtype, param ) \
49
+ JNIEXPORT jobject JNICALL STATISTICS_FUNC (afVarAll##jtype)( \
50
+ JNIEnv * env, jclass clazz, jlong ref, jboolean isBiased) { \
51
+ double real = 0 , img = 0 ; \
52
+ AF_CHECK (af_var_all (&real, &img, ARRAY (ref), isBiased)); \
53
+ jclass cls = env->FindClass (" com/arrayfire/" #jtype); \
54
+ jmethodID id = env->GetMethodID (cls, " <init>" , " (" #param " )V" ); \
55
+ jobject obj = env->NewObject (cls, id, real, img); \
56
+ return obj; \
57
+ }
58
+
8
59
JNIEXPORT jlong JNICALL STATISTICS_FUNC (afMean)(JNIEnv *env, jclass clazz,
9
60
jlong ref, jint dim) {
10
61
af_array ret = 0 ;
11
62
AF_CHECK (af_mean (&ret, ARRAY (ref), dim));
12
63
return JLONG (ret);
13
64
}
14
65
15
- JNIEXPORT jlong JNICALL STATISTICS_FUNC (afMeanWeighted)(JNIEnv *env,
16
- jclass clazz, jlong ref,
17
- jlong weightsRef,
18
- jint dim) {
19
- af_array ret = 0 ;
20
- AF_CHECK (af_mean_weighted (&ret, ARRAY (ref), ARRAY (weightsRef), dim));
21
- return JLONG (ret);
22
- }
23
-
24
66
JNIEXPORT jdouble JNICALL STATISTICS_FUNC (afMeanAll)(JNIEnv *env, jclass clazz,
25
67
jlong ref) {
26
68
double ret = 0 ;
27
69
AF_CHECK (af_mean_all (&ret, NULL , ARRAY (ref)));
28
70
return (jdouble)ret;
29
71
}
30
72
31
- JNIEXPORT jdouble JNICALL STATISTICS_FUNC (afMeanAllWeighted)(JNIEnv *env,
32
- jclass clazz,
33
- jlong ref,
34
- jlong weightsRef) {
73
+ INSTANTIATE_MEAN (FloatComplex, FF)
74
+ INSTANTIATE_MEAN(DoubleComplex, DD)
75
+ INSTANTIATE_ALL_REAL_WEIGHTED(Mean, mean)
76
+ INSTANTIATE_REAL_WEIGHTED(Mean, mean)
77
+ INSTANTIATE_WEIGHTED(FloatComplex, FF, Mean, mean)
78
+ INSTANTIATE_WEIGHTED(DoubleComplex, DD, Mean, mean)
79
+
80
+ #undef INSTANTIATE_MEAN
81
+
82
+ JNIEXPORT jlong JNICALL STATISTICS_FUNC (afVar)(JNIEnv *env, jclass clazz,
83
+ jlong ref, jboolean isBiased,
84
+ jint dim) {
85
+ af_array ret = 0 ;
86
+ AF_CHECK (af_var (&ret, ARRAY (ref), isBiased, dim));
87
+ return JLONG (ret);
88
+ }
89
+
90
+ JNIEXPORT jdouble JNICALL STATISTICS_FUNC (afVarAll)(JNIEnv *env, jclass clazz,
91
+ jlong ref,
92
+ jboolean isBiased) {
35
93
double ret = 0 ;
36
- AF_CHECK (af_mean_all_weighted (&ret, NULL , ARRAY (ref), ARRAY (weightsRef) ));
94
+ AF_CHECK (af_var_all (&ret, NULL , ARRAY (ref), isBiased ));
37
95
return (jdouble)ret;
38
96
}
39
97
40
- #define INSTANTIATE_MEAN (jtype, param ) \
41
- JNIEXPORT jobject JNICALL STATISTICS_FUNC (afMeanAll##jtype)( \
42
- JNIEnv * env, jclass clazz, jlong ref) { \
43
- double real = 0 , img = 0 ; \
44
- AF_CHECK (af_mean_all (&real, &img, ARRAY (ref))); \
45
- jclass cls = env->FindClass (" com/arrayfire/" #jtype); \
46
- jmethodID id = env->GetMethodID (cls, " <init>" , " (" #param " )V" ); \
47
- jobject obj = env->NewObject (cls, id, real, img); \
48
- return obj; \
49
- }
50
-
51
- #define INSTANTIATE_MEAN_WEIGHTED (jtype, param ) \
52
- JNIEXPORT jobject JNICALL STATISTICS_FUNC (afMeanAll##jtype##Weighted)( \
53
- JNIEnv * env, jclass clazz, jlong ref, jlong weightsRef) { \
54
- double real = 0 , img = 0 ; \
55
- AF_CHECK ( \
56
- af_mean_all_weighted (&real, &img, ARRAY (ref), ARRAY (weightsRef))); \
57
- jclass cls = env->FindClass (" com/arrayfire/" #jtype); \
58
- jmethodID id = env->GetMethodID (cls, " <init>" , " (" #param " )V" ); \
59
- jobject obj = env->NewObject (cls, id, real, img); \
60
- return obj; \
61
- }
98
+ INSTANTIATE_VAR (FloatComplex, FF)
99
+ INSTANTIATE_VAR(DoubleComplex, DD)
100
+ INSTANTIATE_REAL_WEIGHTED(Var, var)
101
+ INSTANTIATE_ALL_REAL_WEIGHTED(Var, var)
102
+ INSTANTIATE_WEIGHTED(FloatComplex, FF, Var, var)
103
+ INSTANTIATE_WEIGHTED(DoubleComplex, DD, Var, var)
62
104
63
- INSTANTIATE_MEAN (FloatComplex, FF)
64
- INSTANTIATE_MEAN(DoubleComplex, DD)
65
- INSTANTIATE_MEAN_WEIGHTED(FloatComplex, FF)
66
- INSTANTIATE_MEAN_WEIGHTED(DoubleComplex, DD)
105
+ #undef INSTANTIATE_VAR
106
+ #undef INSTANTIATE_MEAN
107
+ #undef INSTANTIATE_WEIGHTED
108
+ #undef INSTANTIATE_REAL_WEIGHTED
109
+ #undef INSTANTIATE_ALL_REAL_WEIGHTED
67
110
68
111
END_EXTERN_C
0 commit comments