1// This file is automatically generated from
2// frameworks/rs/tests/java_api/RSUnitTests/RSUnitTests.py
3/*
4 * Copyright (C) 2017 The Android Open Source Project
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 *      http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19package com.android.rs.unittest;
20
21import android.content.Context;
22import android.support.v8.renderscript.Byte2;
23import android.support.v8.renderscript.Byte3;
24import android.support.v8.renderscript.Byte4;
25import android.support.v8.renderscript.Float2;
26import android.support.v8.renderscript.Float3;
27import android.support.v8.renderscript.Float4;
28import android.support.v8.renderscript.Int2;
29import android.support.v8.renderscript.Int3;
30import android.support.v8.renderscript.Int4;
31import android.support.v8.renderscript.Long2;
32import android.support.v8.renderscript.Long3;
33import android.support.v8.renderscript.Long4;
34import android.support.v8.renderscript.RenderScript;
35import android.support.v8.renderscript.Short2;
36import android.support.v8.renderscript.Short3;
37import android.support.v8.renderscript.Short4;
38
39import java.util.Random;
40
41public class UT_math_agree extends UnitTest {
42    private Random rand;
43
44    public UT_math_agree(Context ctx) {
45        super("Math Agreement", ctx);
46        rand = new Random();
47    }
48
49    // packing functions
50    private Float2 pack_f2(float[] val) {
51        assert val.length == 2;
52        return new Float2(val[0], val[1]);
53    }
54
55    private Float3 pack_f3(float[] val) {
56        assert val.length == 3;
57        return new Float3(val[0], val[1], val[2]);
58    }
59
60    private Float4 pack_f4(float[] val) {
61        assert val.length == 4;
62        return new Float4(val[0], val[1], val[2], val[3]);
63    }
64
65    private Byte2 pack_b2(byte[] val) {
66        assert val.length == 2;
67        return new Byte2(val[0], val[1]);
68    }
69
70    private Byte3 pack_b3(byte[] val) {
71        assert val.length == 3;
72        return new Byte3(val[0], val[1], val[2]);
73    }
74
75    private Byte4 pack_b4(byte[] val) {
76        assert val.length == 4;
77        return new Byte4(val[0], val[1], val[2], val[3]);
78    }
79
80    private Short2 pack_s2(short[] val) {
81        assert val.length == 2;
82        return new Short2(val[0], val[1]);
83    }
84
85    private Short3 pack_s3(short[] val) {
86        assert val.length == 3;
87        return new Short3(val[0], val[1], val[2]);
88    }
89
90    private Short4 pack_s4(short[] val) {
91        assert val.length == 4;
92        return new Short4(val[0], val[1], val[2], val[3]);
93    }
94
95    private Int2 pack_i2(int[] val) {
96        assert val.length == 2;
97        return new Int2(val[0], val[1]);
98    }
99
100    private Int3 pack_i3(int[] val) {
101        assert val.length == 3;
102        return new Int3(val[0], val[1], val[2]);
103    }
104
105    private Int4 pack_i4(int[] val) {
106        assert val.length == 4;
107        return new Int4(val[0], val[1], val[2], val[3]);
108    }
109
110    private Long2 pack_l2(long[] val) {
111        assert val.length == 2;
112        return new Long2(val[0], val[1]);
113    }
114
115    private Long3 pack_l3(long[] val) {
116        assert val.length == 3;
117        return new Long3(val[0], val[1], val[2]);
118    }
119
120    private Long4 pack_l4(long[] val) {
121        assert val.length == 4;
122        return new Long4(val[0], val[1], val[2], val[3]);
123    }
124
125    // random vector generation functions
126    private float[] randvec_float(int dim) {
127        float[] fv = new float[dim];
128        for (int i = 0; i < dim; ++i)
129            fv[i] = rand.nextFloat();
130        return fv;
131    }
132
133    private byte[] randvec_char(int dim) {
134        byte[] cv = new byte[dim];
135        rand.nextBytes(cv);
136        return cv;
137    }
138
139    private short[] randvec_uchar(int dim) {
140        short[] ucv = new short[dim];
141        for (int i = 0; i < dim; ++i)
142            ucv[i] = (short) rand.nextInt(0x1 << 8);
143        return ucv;
144    }
145
146    private short[] randvec_short(int dim) {
147        short[] sv = new short[dim];
148        for (int i = 0; i < dim; ++i)
149            sv[i] = (short) rand.nextInt(0x1 << 16);
150        return sv;
151    }
152
153    private int[] randvec_ushort(int dim) {
154        int[] usv = new int[dim];
155        for (int i = 0; i < dim; ++i)
156            usv[i] = rand.nextInt(0x1 << 16);
157        return usv;
158    }
159
160    private int[] randvec_int(int dim) {
161        int[] iv = new int[dim];
162        for (int i = 0; i < dim; ++i)
163            iv[i] = rand.nextInt();
164        return iv;
165    }
166
167    private long[] randvec_uint(int dim) {
168        long[] uiv = new long[dim];
169        for (int i = 0; i < dim; ++i)
170            uiv[i] = (long) rand.nextInt() - (long) Integer.MIN_VALUE;
171        return uiv;
172    }
173
174    private long[] randvec_long(int dim) {
175        long[] lv = new long[dim];
176        for (int i = 0; i < dim; ++i)
177            lv[i] = rand.nextLong();
178        return lv;
179    }
180    // TODO:  unsigned long generator
181
182    // min reference functions
183    private float min(float v1, float v2) {
184        return v1 < v2 ? v1 : v2;
185    }
186
187    private float[] min(float[] v1, float[] v2) {
188        assert v1.length == v2.length;
189        float[] rv = new float[v1.length];
190        for (int i = 0; i < v1.length; ++i)
191            rv[i] = min(v1[i], v2[i]);
192        return rv;
193    }
194
195    private byte min(byte v1, byte v2) {
196        return v1 < v2 ? v1 : v2;
197    }
198
199    private byte[] min(byte[] v1, byte[] v2) {
200        assert v1.length == v2.length;
201        byte[] rv = new byte[v1.length];
202        for (int i = 0; i < v1.length; ++i)
203            rv[i] = min(v1[i], v2[i]);
204        return rv;
205    }
206
207    private short min(short v1, short v2) {
208        return v1 < v2 ? v1 : v2;
209    }
210
211    private short[] min(short[] v1, short[] v2) {
212        assert v1.length == v2.length;
213        short[] rv = new short[v1.length];
214        for (int i = 0; i < v1.length; ++i)
215            rv[i] = min(v1[i], v2[i]);
216        return rv;
217    }
218
219    private int min(int v1, int v2) {
220        return v1 < v2 ? v1 : v2;
221    }
222
223    private int[] min(int[] v1, int[] v2) {
224        assert v1.length == v2.length;
225        int[] rv = new int[v1.length];
226        for (int i = 0; i < v1.length; ++i)
227            rv[i] = min(v1[i], v2[i]);
228        return rv;
229    }
230
231    private long min(long v1, long v2) {
232        return v1 < v2 ? v1 : v2;
233    }
234
235    private long[] min(long[] v1, long[] v2) {
236        assert v1.length == v2.length;
237        long[] rv = new long[v1.length];
238        for (int i = 0; i < v1.length; ++i)
239            rv[i] = min(v1[i], v2[i]);
240        return rv;
241    }
242    // TODO:  unsigned long version of min
243
244    // max reference functions
245    private float max(float v1, float v2) {
246        return v1 > v2 ? v1 : v2;
247    }
248
249    private float[] max(float[] v1, float[] v2) {
250        assert v1.length == v2.length;
251        float[] rv = new float[v1.length];
252        for (int i = 0; i < v1.length; ++i)
253            rv[i] = max(v1[i], v2[i]);
254        return rv;
255    }
256
257    private byte max(byte v1, byte v2) {
258        return v1 > v2 ? v1 : v2;
259    }
260
261    private byte[] max(byte[] v1, byte[] v2) {
262        assert v1.length == v2.length;
263        byte[] rv = new byte[v1.length];
264        for (int i = 0; i < v1.length; ++i)
265            rv[i] = max(v1[i], v2[i]);
266        return rv;
267    }
268
269    private short max(short v1, short v2) {
270        return v1 > v2 ? v1 : v2;
271    }
272
273    private short[] max(short[] v1, short[] v2) {
274        assert v1.length == v2.length;
275        short[] rv = new short[v1.length];
276        for (int i = 0; i < v1.length; ++i)
277            rv[i] = max(v1[i], v2[i]);
278        return rv;
279    }
280
281    private int max(int v1, int v2) {
282        return v1 > v2 ? v1 : v2;
283    }
284
285    private int[] max(int[] v1, int[] v2) {
286        assert v1.length == v2.length;
287        int[] rv = new int[v1.length];
288        for (int i = 0; i < v1.length; ++i)
289            rv[i] = max(v1[i], v2[i]);
290        return rv;
291    }
292
293    private long max(long v1, long v2) {
294        return v1 > v2 ? v1 : v2;
295    }
296
297    private long[] max(long[] v1, long[] v2) {
298        assert v1.length == v2.length;
299        long[] rv = new long[v1.length];
300        for (int i = 0; i < v1.length; ++i)
301            rv[i] = max(v1[i], v2[i]);
302        return rv;
303    }
304    // TODO:  unsigned long version of max
305
306    // fmin reference functions
307    private float fmin(float v1, float v2) {
308        return min(v1, v2);
309    }
310
311    private float[] fmin(float[] v1, float[] v2) {
312        return min(v1, v2);
313    }
314
315    private float[] fmin(float[] v1, float v2) {
316        float[] rv = new float[v1.length];
317        for (int i = 0; i < v1.length; ++i)
318            rv[i] = min(v1[i], v2);
319        return rv;
320    }
321
322    // fmax reference functions
323    private float fmax(float v1, float v2) {
324        return max(v1, v2);
325    }
326
327    private float[] fmax(float[] v1, float[] v2) {
328        return max(v1, v2);
329    }
330
331    private float[] fmax(float[] v1, float v2) {
332        float[] rv = new float[v1.length];
333        for (int i = 0; i < v1.length; ++i)
334            rv[i] = max(v1[i], v2);
335        return rv;
336    }
337
338    private void initializeValues(ScriptC_math_agree s) {
339        float x = rand.nextFloat();
340        float y = rand.nextFloat();
341
342        s.set_x(x);
343        s.set_y(y);
344        s.set_result_add(x + y);
345        s.set_result_sub(x - y);
346        s.set_result_mul(x * y);
347        s.set_result_div(x / y);
348
349        // Generate random vectors of all types
350        float rand_f1_0 = rand.nextFloat();
351        float[] rand_f2_0 = randvec_float(2);
352        float[] rand_f3_0 = randvec_float(3);
353        float[] rand_f4_0 = randvec_float(4);
354        float rand_f1_1 = rand.nextFloat();
355        float[] rand_f2_1 = randvec_float(2);
356        float[] rand_f3_1 = randvec_float(3);
357        float[] rand_f4_1 = randvec_float(4);
358        short rand_uc1_0 = (short) rand.nextInt(0x1 << 8);
359        short[] rand_uc2_0 = randvec_uchar(2);
360        short[] rand_uc3_0 = randvec_uchar(3);
361        short[] rand_uc4_0 = randvec_uchar(4);
362        short rand_uc1_1 = (short) rand.nextInt(0x1 << 8);
363        short[] rand_uc2_1 = randvec_uchar(2);
364        short[] rand_uc3_1 = randvec_uchar(3);
365        short[] rand_uc4_1 = randvec_uchar(4);
366        short rand_ss1_0 = (short) rand.nextInt(0x1 << 16);
367        short[] rand_ss2_0 = randvec_short(2);
368        short[] rand_ss3_0 = randvec_short(3);
369        short[] rand_ss4_0 = randvec_short(4);
370        short rand_ss1_1 = (short) rand.nextInt(0x1 << 16);
371        short[] rand_ss2_1 = randvec_short(2);
372        short[] rand_ss3_1 = randvec_short(3);
373        short[] rand_ss4_1 = randvec_short(4);
374        int rand_us1_0 = rand.nextInt(0x1 << 16);
375        int[] rand_us2_0 = randvec_ushort(2);
376        int[] rand_us3_0 = randvec_ushort(3);
377        int[] rand_us4_0 = randvec_ushort(4);
378        int rand_us1_1 = rand.nextInt(0x1 << 16);
379        int[] rand_us2_1 = randvec_ushort(2);
380        int[] rand_us3_1 = randvec_ushort(3);
381        int[] rand_us4_1 = randvec_ushort(4);
382        int rand_si1_0 = rand.nextInt();
383        int[] rand_si2_0 = randvec_int(2);
384        int[] rand_si3_0 = randvec_int(3);
385        int[] rand_si4_0 = randvec_int(4);
386        int rand_si1_1 = rand.nextInt();
387        int[] rand_si2_1 = randvec_int(2);
388        int[] rand_si3_1 = randvec_int(3);
389        int[] rand_si4_1 = randvec_int(4);
390        long rand_ui1_0 = (long) rand.nextInt() - (long) Integer.MIN_VALUE;
391        long[] rand_ui2_0 = randvec_uint(2);
392        long[] rand_ui3_0 = randvec_uint(3);
393        long[] rand_ui4_0 = randvec_uint(4);
394        long rand_ui1_1 = (long) rand.nextInt() - (long) Integer.MIN_VALUE;
395        long[] rand_ui2_1 = randvec_uint(2);
396        long[] rand_ui3_1 = randvec_uint(3);
397        long[] rand_ui4_1 = randvec_uint(4);
398        long rand_sl1_0 = rand.nextLong();
399        long[] rand_sl2_0 = randvec_long(2);
400        long[] rand_sl3_0 = randvec_long(3);
401        long[] rand_sl4_0 = randvec_long(4);
402        long rand_sl1_1 = rand.nextLong();
403        long[] rand_sl2_1 = randvec_long(2);
404        long[] rand_sl3_1 = randvec_long(3);
405        long[] rand_sl4_1 = randvec_long(4);
406        byte rand_sc1_0 = (byte) rand.nextInt(0x1 << 8);
407        byte[] rand_sc2_0 = randvec_char(2);
408        byte[] rand_sc3_0 = randvec_char(3);
409        byte[] rand_sc4_0 = randvec_char(4);
410        byte rand_sc1_1 = (byte) rand.nextInt(0x1 << 8);
411        byte[] rand_sc2_1 = randvec_char(2);
412        byte[] rand_sc3_1 = randvec_char(3);
413        byte[] rand_sc4_1 = randvec_char(4);
414        // TODO:  generate unsigned long vectors
415
416        // Set random vectors in renderscript code
417        s.set_rand_f1_0(rand_f1_0);
418        s.set_rand_f2_0(pack_f2(rand_f2_0));
419        s.set_rand_f3_0(pack_f3(rand_f3_0));
420        s.set_rand_f4_0(pack_f4(rand_f4_0));
421        s.set_rand_f1_1(rand_f1_1);
422        s.set_rand_f2_1(pack_f2(rand_f2_1));
423        s.set_rand_f3_1(pack_f3(rand_f3_1));
424        s.set_rand_f4_1(pack_f4(rand_f4_1));
425        s.set_rand_uc1_1(rand_uc1_1);
426        s.set_rand_uc2_1(pack_s2(rand_uc2_1));
427        s.set_rand_uc3_1(pack_s3(rand_uc3_1));
428        s.set_rand_uc4_1(pack_s4(rand_uc4_1));
429        s.set_rand_ss1_0(rand_ss1_0);
430        s.set_rand_ss2_0(pack_s2(rand_ss2_0));
431        s.set_rand_ss3_0(pack_s3(rand_ss3_0));
432        s.set_rand_ss4_0(pack_s4(rand_ss4_0));
433        s.set_rand_ss1_1(rand_ss1_1);
434        s.set_rand_ss2_1(pack_s2(rand_ss2_1));
435        s.set_rand_ss3_1(pack_s3(rand_ss3_1));
436        s.set_rand_ss4_1(pack_s4(rand_ss4_1));
437        s.set_rand_us1_0(rand_us1_0);
438        s.set_rand_us2_0(pack_i2(rand_us2_0));
439        s.set_rand_us3_0(pack_i3(rand_us3_0));
440        s.set_rand_us4_0(pack_i4(rand_us4_0));
441        s.set_rand_us1_1(rand_us1_1);
442        s.set_rand_us2_1(pack_i2(rand_us2_1));
443        s.set_rand_us3_1(pack_i3(rand_us3_1));
444        s.set_rand_us4_1(pack_i4(rand_us4_1));
445        s.set_rand_si1_0(rand_si1_0);
446        s.set_rand_si2_0(pack_i2(rand_si2_0));
447        s.set_rand_si3_0(pack_i3(rand_si3_0));
448        s.set_rand_si4_0(pack_i4(rand_si4_0));
449        s.set_rand_si1_1(rand_si1_1);
450        s.set_rand_si2_1(pack_i2(rand_si2_1));
451        s.set_rand_si3_1(pack_i3(rand_si3_1));
452        s.set_rand_si4_1(pack_i4(rand_si4_1));
453        s.set_rand_ui1_0(rand_ui1_0);
454        s.set_rand_ui2_0(pack_l2(rand_ui2_0));
455        s.set_rand_ui3_0(pack_l3(rand_ui3_0));
456        s.set_rand_ui4_0(pack_l4(rand_ui4_0));
457        s.set_rand_ui1_1(rand_ui1_1);
458        s.set_rand_ui2_1(pack_l2(rand_ui2_1));
459        s.set_rand_ui3_1(pack_l3(rand_ui3_1));
460        s.set_rand_ui4_1(pack_l4(rand_ui4_1));
461        s.set_rand_sl1_0(rand_sl1_0);
462        s.set_rand_sl2_0(pack_l2(rand_sl2_0));
463        s.set_rand_sl3_0(pack_l3(rand_sl3_0));
464        s.set_rand_sl4_0(pack_l4(rand_sl4_0));
465        s.set_rand_sl1_1(rand_sl1_1);
466        s.set_rand_sl2_1(pack_l2(rand_sl2_1));
467        s.set_rand_sl3_1(pack_l3(rand_sl3_1));
468        s.set_rand_sl4_1(pack_l4(rand_sl4_1));
469        s.set_rand_uc1_0(rand_uc1_0);
470        s.set_rand_uc2_0(pack_s2(rand_uc2_0));
471        s.set_rand_uc3_0(pack_s3(rand_uc3_0));
472        s.set_rand_uc4_0(pack_s4(rand_uc4_0));
473        s.set_rand_sc1_0(rand_sc1_0);
474        s.set_rand_sc2_0(pack_b2(rand_sc2_0));
475        s.set_rand_sc3_0(pack_b3(rand_sc3_0));
476        s.set_rand_sc4_0(pack_b4(rand_sc4_0));
477        s.set_rand_sc1_1(rand_sc1_1);
478        s.set_rand_sc2_1(pack_b2(rand_sc2_1));
479        s.set_rand_sc3_1(pack_b3(rand_sc3_1));
480        s.set_rand_sc4_1(pack_b4(rand_sc4_1));
481        // TODO:  set unsigned long vectors
482
483        // Set results for min
484        s.set_min_rand_f1_f1(min(rand_f1_0, rand_f1_1));
485        s.set_min_rand_f2_f2(pack_f2(min(rand_f2_0, rand_f2_1)));
486        s.set_min_rand_f3_f3(pack_f3(min(rand_f3_0, rand_f3_1)));
487        s.set_min_rand_f4_f4(pack_f4(min(rand_f4_0, rand_f4_1)));
488        s.set_min_rand_uc1_uc1(min(rand_uc1_0, rand_uc1_1));
489        s.set_min_rand_uc2_uc2(pack_s2(min(rand_uc2_0, rand_uc2_1)));
490        s.set_min_rand_uc3_uc3(pack_s3(min(rand_uc3_0, rand_uc3_1)));
491        s.set_min_rand_uc4_uc4(pack_s4(min(rand_uc4_0, rand_uc4_1)));
492        s.set_min_rand_ss1_ss1(min(rand_ss1_0, rand_ss1_1));
493        s.set_min_rand_ss2_ss2(pack_s2(min(rand_ss2_0, rand_ss2_1)));
494        s.set_min_rand_ss3_ss3(pack_s3(min(rand_ss3_0, rand_ss3_1)));
495        s.set_min_rand_ss4_ss4(pack_s4(min(rand_ss4_0, rand_ss4_1)));
496        s.set_min_rand_us1_us1(min(rand_us1_0, rand_us1_1));
497        s.set_min_rand_us2_us2(pack_i2(min(rand_us2_0, rand_us2_1)));
498        s.set_min_rand_us3_us3(pack_i3(min(rand_us3_0, rand_us3_1)));
499        s.set_min_rand_us4_us4(pack_i4(min(rand_us4_0, rand_us4_1)));
500        s.set_min_rand_si1_si1(min(rand_si1_0, rand_si1_1));
501        s.set_min_rand_si2_si2(pack_i2(min(rand_si2_0, rand_si2_1)));
502        s.set_min_rand_si3_si3(pack_i3(min(rand_si3_0, rand_si3_1)));
503        s.set_min_rand_si4_si4(pack_i4(min(rand_si4_0, rand_si4_1)));
504        s.set_min_rand_ui1_ui1(min(rand_ui1_0, rand_ui1_1));
505        s.set_min_rand_ui2_ui2(pack_l2(min(rand_ui2_0, rand_ui2_1)));
506        s.set_min_rand_ui3_ui3(pack_l3(min(rand_ui3_0, rand_ui3_1)));
507        s.set_min_rand_ui4_ui4(pack_l4(min(rand_ui4_0, rand_ui4_1)));
508        s.set_min_rand_sl1_sl1(min(rand_sl1_0, rand_sl1_1));
509        s.set_min_rand_sl2_sl2(pack_l2(min(rand_sl2_0, rand_sl2_1)));
510        s.set_min_rand_sl3_sl3(pack_l3(min(rand_sl3_0, rand_sl3_1)));
511        s.set_min_rand_sl4_sl4(pack_l4(min(rand_sl4_0, rand_sl4_1)));
512        s.set_min_rand_sc1_sc1(min(rand_sc1_0, rand_sc1_1));
513        s.set_min_rand_sc2_sc2(pack_b2(min(rand_sc2_0, rand_sc2_1)));
514        s.set_min_rand_sc3_sc3(pack_b3(min(rand_sc3_0, rand_sc3_1)));
515        s.set_min_rand_sc4_sc4(pack_b4(min(rand_sc4_0, rand_sc4_1)));
516        // TODO:  set results for unsigned long min
517
518        // Set results for max
519        s.set_max_rand_f1_f1(max(rand_f1_0, rand_f1_1));
520        s.set_max_rand_f2_f2(pack_f2(max(rand_f2_0, rand_f2_1)));
521        s.set_max_rand_f3_f3(pack_f3(max(rand_f3_0, rand_f3_1)));
522        s.set_max_rand_f4_f4(pack_f4(max(rand_f4_0, rand_f4_1)));
523        s.set_max_rand_uc1_uc1(max(rand_uc1_0, rand_uc1_1));
524        s.set_max_rand_uc2_uc2(pack_s2(max(rand_uc2_0, rand_uc2_1)));
525        s.set_max_rand_uc3_uc3(pack_s3(max(rand_uc3_0, rand_uc3_1)));
526        s.set_max_rand_uc4_uc4(pack_s4(max(rand_uc4_0, rand_uc4_1)));
527        s.set_max_rand_ss1_ss1(max(rand_ss1_0, rand_ss1_1));
528        s.set_max_rand_ss2_ss2(pack_s2(max(rand_ss2_0, rand_ss2_1)));
529        s.set_max_rand_ss3_ss3(pack_s3(max(rand_ss3_0, rand_ss3_1)));
530        s.set_max_rand_ss4_ss4(pack_s4(max(rand_ss4_0, rand_ss4_1)));
531        s.set_max_rand_us1_us1(max(rand_us1_0, rand_us1_1));
532        s.set_max_rand_us2_us2(pack_i2(max(rand_us2_0, rand_us2_1)));
533        s.set_max_rand_us3_us3(pack_i3(max(rand_us3_0, rand_us3_1)));
534        s.set_max_rand_us4_us4(pack_i4(max(rand_us4_0, rand_us4_1)));
535        s.set_max_rand_si1_si1(max(rand_si1_0, rand_si1_1));
536        s.set_max_rand_si2_si2(pack_i2(max(rand_si2_0, rand_si2_1)));
537        s.set_max_rand_si3_si3(pack_i3(max(rand_si3_0, rand_si3_1)));
538        s.set_max_rand_si4_si4(pack_i4(max(rand_si4_0, rand_si4_1)));
539        s.set_max_rand_ui1_ui1(max(rand_ui1_0, rand_ui1_1));
540        s.set_max_rand_ui2_ui2(pack_l2(max(rand_ui2_0, rand_ui2_1)));
541        s.set_max_rand_ui3_ui3(pack_l3(max(rand_ui3_0, rand_ui3_1)));
542        s.set_max_rand_ui4_ui4(pack_l4(max(rand_ui4_0, rand_ui4_1)));
543        s.set_max_rand_sl1_sl1(max(rand_sl1_0, rand_sl1_1));
544        s.set_max_rand_sl2_sl2(pack_l2(max(rand_sl2_0, rand_sl2_1)));
545        s.set_max_rand_sl3_sl3(pack_l3(max(rand_sl3_0, rand_sl3_1)));
546        s.set_max_rand_sl4_sl4(pack_l4(max(rand_sl4_0, rand_sl4_1)));
547        s.set_max_rand_sc1_sc1(max(rand_sc1_0, rand_sc1_1));
548        s.set_max_rand_sc2_sc2(pack_b2(max(rand_sc2_0, rand_sc2_1)));
549        s.set_max_rand_sc3_sc3(pack_b3(max(rand_sc3_0, rand_sc3_1)));
550        s.set_max_rand_sc4_sc4(pack_b4(max(rand_sc4_0, rand_sc4_1)));
551
552        // TODO:  set results for unsigned long max
553
554        // Set results for fmin
555        s.set_fmin_rand_f1_f1(fmin(rand_f1_0, rand_f1_1));
556        s.set_fmin_rand_f2_f2(pack_f2(fmin(rand_f2_0, rand_f2_1)));
557        s.set_fmin_rand_f3_f3(pack_f3(fmin(rand_f3_0, rand_f3_1)));
558        s.set_fmin_rand_f4_f4(pack_f4(fmin(rand_f4_0, rand_f4_1)));
559        s.set_fmin_rand_f2_f1(pack_f2(fmin(rand_f2_0, rand_f1_1)));
560        s.set_fmin_rand_f3_f1(pack_f3(fmin(rand_f3_0, rand_f1_1)));
561        s.set_fmin_rand_f4_f1(pack_f4(fmin(rand_f4_0, rand_f1_1)));
562
563        // Set results for fmax
564        s.set_fmax_rand_f1_f1(fmax(rand_f1_0, rand_f1_1));
565        s.set_fmax_rand_f2_f2(pack_f2(fmax(rand_f2_0, rand_f2_1)));
566        s.set_fmax_rand_f3_f3(pack_f3(fmax(rand_f3_0, rand_f3_1)));
567        s.set_fmax_rand_f4_f4(pack_f4(fmax(rand_f4_0, rand_f4_1)));
568        s.set_fmax_rand_f2_f1(pack_f2(fmax(rand_f2_0, rand_f1_1)));
569        s.set_fmax_rand_f3_f1(pack_f3(fmax(rand_f3_0, rand_f1_1)));
570        s.set_fmax_rand_f4_f1(pack_f4(fmax(rand_f4_0, rand_f1_1)));
571    }
572
573    public void run() {
574        RenderScript pRS = createRenderScript(true);
575        ScriptC_math_agree s = new ScriptC_math_agree(pRS);
576        initializeValues(s);
577        s.invoke_math_agree_test();
578        pRS.finish();
579        s.destroy();
580        pRS.destroy();
581    }
582}
583