1648a1c137663ef7207684d0d7009dd5518942111Stephen Hines/*
2648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Copyright (C) 2013 The Android Open Source Project
3648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *
4648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Licensed under the Apache License, Version 2.0 (the "License");
5648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * you may not use this file except in compliance with the License.
6648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * You may obtain a copy of the License at
7648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *
8648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *      http://www.apache.org/licenses/LICENSE-2.0
9648a1c137663ef7207684d0d7009dd5518942111Stephen Hines *
10648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Unless required by applicable law or agreed to in writing, software
11648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS,
12648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * See the License for the specific language governing permissions and
14648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * limitations under the License.
15648a1c137663ef7207684d0d7009dd5518942111Stephen Hines */
16648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
17648a1c137663ef7207684d0d7009dd5518942111Stephen Hinespackage com.android.rs.test_compatlegacy;
18648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
19648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.content.Context;
20648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.content.res.Resources;
21648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.support.v8.renderscript.*;
22648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.util.Log;
23648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport java.util.Arrays;
24648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport java.util.Random;
25648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
26648a1c137663ef7207684d0d7009dd5518942111Stephen Hinespublic class UT_math_agree extends UnitTest {
27648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Resources mRes;
28648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Random rand;
29648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
30648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    protected UT_math_agree(RSTestCore rstc, Resources res, Context ctx) {
31648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        super(rstc, "Math Agreement", ctx);
32648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        mRes = res;
33648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        rand = new Random();
34648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
35648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
36648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    // packing functions
37648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Float2 pack_f2(float[] val) {
38648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 2;
39648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Float2(val[0], val[1]);
40648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
41648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Float3 pack_f3(float[] val) {
42648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 3;
43648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Float3(val[0], val[1], val[2]);
44648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
45648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Float4 pack_f4(float[] val) {
46648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 4;
47648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Float4(val[0], val[1], val[2], val[3]);
48648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
49648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Byte2 pack_b2(byte[] val) {
50648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 2;
51648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Byte2(val[0], val[1]);
52648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
53648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Byte3 pack_b3(byte[] val) {
54648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 3;
55648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Byte3(val[0], val[1], val[2]);
56648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
57648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Byte4 pack_b4(byte[] val) {
58648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 4;
59648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Byte4(val[0], val[1], val[2], val[3]);
60648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
61648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Short2 pack_s2(short[] val) {
62648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 2;
63648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Short2(val[0], val[1]);
64648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
65648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Short3 pack_s3(short[] val) {
66648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 3;
67648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Short3(val[0], val[1], val[2]);
68648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
69648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Short4 pack_s4(short[] val) {
70648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 4;
71648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Short4(val[0], val[1], val[2], val[3]);
72648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
73648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Int2 pack_i2(int[] val) {
74648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 2;
75648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Int2(val[0], val[1]);
76648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
77648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Int3 pack_i3(int[] val) {
78648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 3;
79648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Int3(val[0], val[1], val[2]);
80648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
81648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Int4 pack_i4(int[] val) {
82648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 4;
83648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Int4(val[0], val[1], val[2], val[3]);
84648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
85648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Long2 pack_l2(long[] val) {
86648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 2;
87648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Long2(val[0], val[1]);
88648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
89648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Long3 pack_l3(long[] val) {
90648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 3;
91648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Long3(val[0], val[1], val[2]);
92648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
93648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private Long4 pack_l4(long[] val) {
94648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert val.length == 4;
95648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return new Long4(val[0], val[1], val[2], val[3]);
96648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
97648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
98648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    // random vector generation functions
99648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private float[] randvec_float(int dim) {
100648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] fv = new float[dim];
101648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < dim; ++i)
102648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            fv[i] = rand.nextFloat();
103648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return fv;
104648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
105648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private byte[] randvec_char(int dim) {
106648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] cv = new byte[dim];
107648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        rand.nextBytes(cv);
108648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return cv;
109648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
110648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private short[] randvec_uchar(int dim) {
111648a1c137663ef7207684d0d7009dd5518942111Stephen Hines       short[] ucv = new short[dim];
112648a1c137663ef7207684d0d7009dd5518942111Stephen Hines       for (int i = 0; i < dim; ++i)
113648a1c137663ef7207684d0d7009dd5518942111Stephen Hines           ucv[i] = (short)rand.nextInt(0x1 << 8);
114648a1c137663ef7207684d0d7009dd5518942111Stephen Hines       return ucv;
115648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
116648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private short[] randvec_short(int dim) {
117648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] sv = new short[dim];
118648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < dim; ++i)
119648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            sv[i] = (short)rand.nextInt(0x1 << 16);
120648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return sv;
121648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
122648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private int[] randvec_ushort(int dim) {
123648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] usv = new int[dim];
124648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < dim; ++i)
125648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            usv[i] = rand.nextInt(0x1 << 16);
126648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return usv;
127648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
128648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private int[] randvec_int(int dim) {
129648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] iv = new int[dim];
130648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < dim; ++i)
131648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            iv[i] = rand.nextInt();
132648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return iv;
133648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
134648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private long[] randvec_uint(int dim) {
135648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] uiv = new long[dim];
136648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < dim; ++i)
137648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            uiv[i] = (long)rand.nextInt() - (long)Integer.MIN_VALUE;
138648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return uiv;
139648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
140648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private long[] randvec_long(int dim) {
141648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] lv = new long[dim];
142648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < dim; ++i)
143648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            lv[i] = rand.nextLong();
144648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return lv;
145648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
146648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    // TODO:  unsigned long generator
147648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
148648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    // min reference functions
149648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private float min(float v1, float v2) {
150648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return v1 < v2 ? v1 : v2;
151648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
152648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private float[] min(float[] v1, float[] v2) {
153648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert v1.length == v2.length;
154648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] rv = new float[v1.length];
155648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < v1.length; ++i)
156648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            rv[i] = min(v1[i], v2[i]);
157648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return rv;
158648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
159648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private byte min(byte v1, byte v2) {
160648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return v1 < v2 ? v1 : v2;
161648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
162648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private byte[] min(byte[] v1, byte[] v2) {
163648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert v1.length == v2.length;
164648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] rv = new byte[v1.length];
165648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < v1.length; ++i)
166648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            rv[i] = min(v1[i], v2[i]);
167648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return rv;
168648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
169648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private short min(short v1, short v2) {
170648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return v1 < v2 ? v1 : v2;
171648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
172648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private short[] min(short[] v1, short[] v2) {
173648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert v1.length == v2.length;
174648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rv = new short[v1.length];
175648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < v1.length; ++i)
176648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            rv[i] = min(v1[i], v2[i]);
177648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return rv;
178648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
179648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private int min(int v1, int v2) {
180648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return v1 < v2 ? v1 : v2;
181648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
182648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private int[] min(int[] v1, int[] v2) {
183648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert v1.length == v2.length;
184648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rv = new int[v1.length];
185648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < v1.length; ++i)
186648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            rv[i] = min(v1[i], v2[i]);
187648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return rv;
188648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
189648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private long min(long v1, long v2) {
190648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return v1 < v2 ? v1 : v2;
191648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
192648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private long[] min(long[] v1, long[] v2) {
193648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert v1.length == v2.length;
194648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rv = new long[v1.length];
195648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < v1.length; ++i)
196648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            rv[i] = min(v1[i], v2[i]);
197648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return rv;
198648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
199648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    // TODO:  unsigned long version of min
200648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
201648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    // max reference functions
202648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private float max(float v1, float v2) {
203648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return v1 > v2 ? v1 : v2;
204648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
205648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private float[] max(float[] v1, float[] v2) {
206648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert v1.length == v2.length;
207648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] rv = new float[v1.length];
208648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < v1.length; ++i)
209648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            rv[i] = max(v1[i], v2[i]);
210648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return rv;
211648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
212648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private byte max(byte v1, byte v2) {
213648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return v1 > v2 ? v1 : v2;
214648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
215648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private byte[] max(byte[] v1, byte[] v2) {
216648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert v1.length == v2.length;
217648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] rv = new byte[v1.length];
218648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < v1.length; ++i)
219648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            rv[i] = max(v1[i], v2[i]);
220648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return rv;
221648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
222648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private short max(short v1, short v2) {
223648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return v1 > v2 ? v1 : v2;
224648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
225648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private short[] max(short[] v1, short[] v2) {
226648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert v1.length == v2.length;
227648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rv = new short[v1.length];
228648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < v1.length; ++i)
229648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            rv[i] = max(v1[i], v2[i]);
230648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return rv;
231648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
232648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private int max(int v1, int v2) {
233648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return v1 > v2 ? v1 : v2;
234648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
235648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private int[] max(int[] v1, int[] v2) {
236648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert v1.length == v2.length;
237648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rv = new int[v1.length];
238648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < v1.length; ++i)
239648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            rv[i] = max(v1[i], v2[i]);
240648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return rv;
241648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
242648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private long max(long v1, long v2) {
243648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return v1 > v2 ? v1 : v2;
244648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
245648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private long[] max(long[] v1, long[] v2) {
246648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        assert v1.length == v2.length;
247648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rv = new long[v1.length];
248648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < v1.length; ++i)
249648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            rv[i] = max(v1[i], v2[i]);
250648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return rv;
251648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
252648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    // TODO:  unsigned long version of max
253648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
254648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    // fmin reference functions
255648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private float fmin(float v1, float v2) {
256648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return min(v1, v2);
257648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
258648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private float[] fmin(float[] v1, float[] v2) {
259648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return min(v1, v2);
260648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
261648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private float[] fmin(float[] v1, float v2) {
262648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] rv = new float[v1.length];
263648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < v1.length; ++i)
264648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            rv[i] = min(v1[i], v2);
265648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return rv;
266648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
267648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
268648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    // fmax reference functions
269648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private float fmax(float v1, float v2) {
270648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return max(v1, v2);
271648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
272648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private float[] fmax(float[] v1, float[] v2) {
273648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return max(v1, v2);
274648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
275648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private float[] fmax(float[] v1, float v2) {
276648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] rv = new float[v1.length];
277648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        for (int i = 0; i < v1.length; ++i)
278648a1c137663ef7207684d0d7009dd5518942111Stephen Hines            rv[i] = max(v1[i], v2);
279648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        return rv;
280648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
281648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
282648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    private void initializeValues(ScriptC_math_agree s) {
283648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float x = rand.nextFloat();
284648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float y = rand.nextFloat();
285648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
286648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_x(x);
287648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_y(y);
288648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_result_add(x + y);
289648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_result_sub(x - y);
290648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_result_mul(x * y);
291648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_result_div(x / y);
292648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
293648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        // Generate random vectors of all types
294648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float rand_f1_0 = rand.nextFloat();
295648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] rand_f2_0 = randvec_float(2);
296648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] rand_f3_0 = randvec_float(3);
297648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] rand_f4_0 = randvec_float(4);
298648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float rand_f1_1 = rand.nextFloat();
299648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] rand_f2_1 = randvec_float(2);
300648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] rand_f3_1 = randvec_float(3);
301648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        float[] rand_f4_1 = randvec_float(4);
302648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short rand_uc1_0 = (short)rand.nextInt(0x1 << 8);
303648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rand_uc2_0 = randvec_uchar(2);
304648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rand_uc3_0 = randvec_uchar(3);
305648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rand_uc4_0 = randvec_uchar(4);
306648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short rand_uc1_1 = (short)rand.nextInt(0x1 << 8);
307648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rand_uc2_1 = randvec_uchar(2);
308648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rand_uc3_1 = randvec_uchar(3);
309648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rand_uc4_1 = randvec_uchar(4);
310648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short rand_ss1_0 = (short)rand.nextInt(0x1 << 16);
311648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rand_ss2_0 = randvec_short(2);
312648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rand_ss3_0 = randvec_short(3);
313648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rand_ss4_0 = randvec_short(4);
314648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short rand_ss1_1 = (short)rand.nextInt(0x1 << 16);
315648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rand_ss2_1 = randvec_short(2);
316648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rand_ss3_1 = randvec_short(3);
317648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        short[] rand_ss4_1 = randvec_short(4);
318648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int rand_us1_0 = rand.nextInt(0x1 << 16);
319648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rand_us2_0 = randvec_ushort(2);
320648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rand_us3_0 = randvec_ushort(3);
321648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rand_us4_0 = randvec_ushort(4);
322648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int rand_us1_1 = rand.nextInt(0x1 << 16);
323648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rand_us2_1 = randvec_ushort(2);
324648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rand_us3_1 = randvec_ushort(3);
325648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rand_us4_1 = randvec_ushort(4);
326648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int rand_si1_0 = rand.nextInt();
327648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rand_si2_0 = randvec_int(2);
328648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rand_si3_0 = randvec_int(3);
329648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rand_si4_0 = randvec_int(4);
330648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int rand_si1_1 = rand.nextInt();
331648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rand_si2_1 = randvec_int(2);
332648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rand_si3_1 = randvec_int(3);
333648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        int[] rand_si4_1 = randvec_int(4);
334648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long rand_ui1_0 = (long)rand.nextInt() - (long)Integer.MIN_VALUE;
335648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rand_ui2_0 = randvec_uint(2);
336648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rand_ui3_0 = randvec_uint(3);
337648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rand_ui4_0 = randvec_uint(4);
338648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long rand_ui1_1 = (long)rand.nextInt() - (long)Integer.MIN_VALUE;
339648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rand_ui2_1 = randvec_uint(2);
340648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rand_ui3_1 = randvec_uint(3);
341648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rand_ui4_1 = randvec_uint(4);
342648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long rand_sl1_0 = rand.nextLong();
343648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rand_sl2_0 = randvec_long(2);
344648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rand_sl3_0 = randvec_long(3);
345648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rand_sl4_0 = randvec_long(4);
346648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long rand_sl1_1 = rand.nextLong();
347648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rand_sl2_1 = randvec_long(2);
348648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rand_sl3_1 = randvec_long(3);
349648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        long[] rand_sl4_1 = randvec_long(4);
350648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte rand_sc1_0 = (byte)rand.nextInt(0x1 << 8);
351648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] rand_sc2_0 = randvec_char(2);
352648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] rand_sc3_0 = randvec_char(3);
353648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] rand_sc4_0 = randvec_char(4);
354648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte rand_sc1_1 = (byte)rand.nextInt(0x1 << 8);
355648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] rand_sc2_1 = randvec_char(2);
356648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] rand_sc3_1 = randvec_char(3);
357648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        byte[] rand_sc4_1 = randvec_char(4);
358648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        // TODO:  generate unsigned long vectors
359648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
360648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        // Set random vectors in renderscript code
361648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_f1_0(rand_f1_0);
362648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_f2_0(pack_f2(rand_f2_0));
363648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_f3_0(pack_f3(rand_f3_0));
364648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_f4_0(pack_f4(rand_f4_0));
365648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_f1_1(rand_f1_1);
366648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_f2_1(pack_f2(rand_f2_1));
367648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_f3_1(pack_f3(rand_f3_1));
368648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_f4_1(pack_f4(rand_f4_1));
369648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_uc1_1(rand_uc1_1);
370648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_uc2_1(pack_s2(rand_uc2_1));
371648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_uc3_1(pack_s3(rand_uc3_1));
372648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_uc4_1(pack_s4(rand_uc4_1));
373648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ss1_0(rand_ss1_0);
374648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ss2_0(pack_s2(rand_ss2_0));
375648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ss3_0(pack_s3(rand_ss3_0));
376648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ss4_0(pack_s4(rand_ss4_0));
377648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ss1_1(rand_ss1_1);
378648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ss2_1(pack_s2(rand_ss2_1));
379648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ss3_1(pack_s3(rand_ss3_1));
380648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ss4_1(pack_s4(rand_ss4_1));
381648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_us1_0(rand_us1_0);
382648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_us2_0(pack_i2(rand_us2_0));
383648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_us3_0(pack_i3(rand_us3_0));
384648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_us4_0(pack_i4(rand_us4_0));
385648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_us1_1(rand_us1_1);
386648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_us2_1(pack_i2(rand_us2_1));
387648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_us3_1(pack_i3(rand_us3_1));
388648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_us4_1(pack_i4(rand_us4_1));
389648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_si1_0(rand_si1_0);
390648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_si2_0(pack_i2(rand_si2_0));
391648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_si3_0(pack_i3(rand_si3_0));
392648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_si4_0(pack_i4(rand_si4_0));
393648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_si1_1(rand_si1_1);
394648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_si2_1(pack_i2(rand_si2_1));
395648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_si3_1(pack_i3(rand_si3_1));
396648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_si4_1(pack_i4(rand_si4_1));
397648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ui1_0(rand_ui1_0);
398648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ui2_0(pack_l2(rand_ui2_0));
399648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ui3_0(pack_l3(rand_ui3_0));
400648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ui4_0(pack_l4(rand_ui4_0));
401648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ui1_1(rand_ui1_1);
402648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ui2_1(pack_l2(rand_ui2_1));
403648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ui3_1(pack_l3(rand_ui3_1));
404648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_ui4_1(pack_l4(rand_ui4_1));
405648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sl1_0(rand_sl1_0);
406648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sl2_0(pack_l2(rand_sl2_0));
407648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sl3_0(pack_l3(rand_sl3_0));
408648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sl4_0(pack_l4(rand_sl4_0));
409648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sl1_1(rand_sl1_1);
410648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sl2_1(pack_l2(rand_sl2_1));
411648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sl3_1(pack_l3(rand_sl3_1));
412648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sl4_1(pack_l4(rand_sl4_1));
413648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_uc1_0(rand_uc1_0);
414648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_uc2_0(pack_s2(rand_uc2_0));
415648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_uc3_0(pack_s3(rand_uc3_0));
416648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_uc4_0(pack_s4(rand_uc4_0));
417648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sc1_0(rand_sc1_0);
418648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sc2_0(pack_b2(rand_sc2_0));
419648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sc3_0(pack_b3(rand_sc3_0));
420648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sc4_0(pack_b4(rand_sc4_0));
421648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sc1_1(rand_sc1_1);
422648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sc2_1(pack_b2(rand_sc2_1));
423648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sc3_1(pack_b3(rand_sc3_1));
424648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_rand_sc4_1(pack_b4(rand_sc4_1));
425648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        // TODO:  set unsigned long vectors
426648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
427648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        // Set results for min
428648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_f1_f1(min(rand_f1_0, rand_f1_1));
429648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_f2_f2(pack_f2(min(rand_f2_0, rand_f2_1)));
430648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_f3_f3(pack_f3(min(rand_f3_0, rand_f3_1)));
431648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_f4_f4(pack_f4(min(rand_f4_0, rand_f4_1)));
432648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_uc1_uc1(min(rand_uc1_0, rand_uc1_1));
433648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_uc2_uc2(pack_s2(min(rand_uc2_0, rand_uc2_1)));
434648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_uc3_uc3(pack_s3(min(rand_uc3_0, rand_uc3_1)));
435648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_uc4_uc4(pack_s4(min(rand_uc4_0, rand_uc4_1)));
436648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_ss1_ss1(min(rand_ss1_0, rand_ss1_1));
437648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_ss2_ss2(pack_s2(min(rand_ss2_0, rand_ss2_1)));
438648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_ss3_ss3(pack_s3(min(rand_ss3_0, rand_ss3_1)));
439648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_ss4_ss4(pack_s4(min(rand_ss4_0, rand_ss4_1)));
440648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_us1_us1(min(rand_us1_0, rand_us1_1));
441648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_us2_us2(pack_i2(min(rand_us2_0, rand_us2_1)));
442648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_us3_us3(pack_i3(min(rand_us3_0, rand_us3_1)));
443648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_us4_us4(pack_i4(min(rand_us4_0, rand_us4_1)));
444648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_si1_si1(min(rand_si1_0, rand_si1_1));
445648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_si2_si2(pack_i2(min(rand_si2_0, rand_si2_1)));
446648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_si3_si3(pack_i3(min(rand_si3_0, rand_si3_1)));
447648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_si4_si4(pack_i4(min(rand_si4_0, rand_si4_1)));
448648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_ui1_ui1(min(rand_ui1_0, rand_ui1_1));
449648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_ui2_ui2(pack_l2(min(rand_ui2_0, rand_ui2_1)));
450648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_ui3_ui3(pack_l3(min(rand_ui3_0, rand_ui3_1)));
451648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_ui4_ui4(pack_l4(min(rand_ui4_0, rand_ui4_1)));
452648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_sl1_sl1(min(rand_sl1_0, rand_sl1_1));
453648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_sl2_sl2(pack_l2(min(rand_sl2_0, rand_sl2_1)));
454648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_sl3_sl3(pack_l3(min(rand_sl3_0, rand_sl3_1)));
455648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_sl4_sl4(pack_l4(min(rand_sl4_0, rand_sl4_1)));
456648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_sc1_sc1(min(rand_sc1_0, rand_sc1_1));
457648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_sc2_sc2(pack_b2(min(rand_sc2_0, rand_sc2_1)));
458648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_sc3_sc3(pack_b3(min(rand_sc3_0, rand_sc3_1)));
459648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_min_rand_sc4_sc4(pack_b4(min(rand_sc4_0, rand_sc4_1)));
460648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        // TODO:  set results for unsigned long min
461648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
462648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        // Set results for max
463648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_f1_f1(max(rand_f1_0, rand_f1_1));
464648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_f2_f2(pack_f2(max(rand_f2_0, rand_f2_1)));
465648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_f3_f3(pack_f3(max(rand_f3_0, rand_f3_1)));
466648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_f4_f4(pack_f4(max(rand_f4_0, rand_f4_1)));
467648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_uc1_uc1(max(rand_uc1_0, rand_uc1_1));
468648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_uc2_uc2(pack_s2(max(rand_uc2_0, rand_uc2_1)));
469648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_uc3_uc3(pack_s3(max(rand_uc3_0, rand_uc3_1)));
470648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_uc4_uc4(pack_s4(max(rand_uc4_0, rand_uc4_1)));
471648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_ss1_ss1(max(rand_ss1_0, rand_ss1_1));
472648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_ss2_ss2(pack_s2(max(rand_ss2_0, rand_ss2_1)));
473648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_ss3_ss3(pack_s3(max(rand_ss3_0, rand_ss3_1)));
474648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_ss4_ss4(pack_s4(max(rand_ss4_0, rand_ss4_1)));
475648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_us1_us1(max(rand_us1_0, rand_us1_1));
476648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_us2_us2(pack_i2(max(rand_us2_0, rand_us2_1)));
477648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_us3_us3(pack_i3(max(rand_us3_0, rand_us3_1)));
478648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_us4_us4(pack_i4(max(rand_us4_0, rand_us4_1)));
479648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_si1_si1(max(rand_si1_0, rand_si1_1));
480648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_si2_si2(pack_i2(max(rand_si2_0, rand_si2_1)));
481648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_si3_si3(pack_i3(max(rand_si3_0, rand_si3_1)));
482648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_si4_si4(pack_i4(max(rand_si4_0, rand_si4_1)));
483648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_ui1_ui1(max(rand_ui1_0, rand_ui1_1));
484648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_ui2_ui2(pack_l2(max(rand_ui2_0, rand_ui2_1)));
485648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_ui3_ui3(pack_l3(max(rand_ui3_0, rand_ui3_1)));
486648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_ui4_ui4(pack_l4(max(rand_ui4_0, rand_ui4_1)));
487648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_sl1_sl1(max(rand_sl1_0, rand_sl1_1));
488648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_sl2_sl2(pack_l2(max(rand_sl2_0, rand_sl2_1)));
489648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_sl3_sl3(pack_l3(max(rand_sl3_0, rand_sl3_1)));
490648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_sl4_sl4(pack_l4(max(rand_sl4_0, rand_sl4_1)));
491648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_sc1_sc1(max(rand_sc1_0, rand_sc1_1));
492648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_sc2_sc2(pack_b2(max(rand_sc2_0, rand_sc2_1)));
493648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_sc3_sc3(pack_b3(max(rand_sc3_0, rand_sc3_1)));
494648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_max_rand_sc4_sc4(pack_b4(max(rand_sc4_0, rand_sc4_1)));
495648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
496648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        // TODO:  set results for unsigned long max
497648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
498648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        // Set results for fmin
499648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmin_rand_f1_f1(fmin(rand_f1_0, rand_f1_1));
500648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmin_rand_f2_f2(pack_f2(fmin(rand_f2_0, rand_f2_1)));
501648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmin_rand_f3_f3(pack_f3(fmin(rand_f3_0, rand_f3_1)));
502648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmin_rand_f4_f4(pack_f4(fmin(rand_f4_0, rand_f4_1)));
503648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmin_rand_f2_f1(pack_f2(fmin(rand_f2_0, rand_f1_1)));
504648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmin_rand_f3_f1(pack_f3(fmin(rand_f3_0, rand_f1_1)));
505648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmin_rand_f4_f1(pack_f4(fmin(rand_f4_0, rand_f1_1)));
506648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
507648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        // Set results for fmax
508648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmax_rand_f1_f1(fmax(rand_f1_0, rand_f1_1));
509648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmax_rand_f2_f2(pack_f2(fmax(rand_f2_0, rand_f2_1)));
510648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmax_rand_f3_f3(pack_f3(fmax(rand_f3_0, rand_f3_1)));
511648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmax_rand_f4_f4(pack_f4(fmax(rand_f4_0, rand_f4_1)));
512648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmax_rand_f2_f1(pack_f2(fmax(rand_f2_0, rand_f1_1)));
513648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmax_rand_f3_f1(pack_f3(fmax(rand_f3_0, rand_f1_1)));
514648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.set_fmax_rand_f4_f1(pack_f4(fmax(rand_f4_0, rand_f1_1)));
515648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
516648a1c137663ef7207684d0d7009dd5518942111Stephen Hines
517648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    public void run() {
518648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        RenderScript pRS = RenderScript.create(mCtx);
519648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        ScriptC_math_agree s = new ScriptC_math_agree(pRS);
520648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        pRS.setMessageHandler(mRsMessage);
521648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        initializeValues(s);
522648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        s.invoke_math_agree_test();
523648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        pRS.finish();
524648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        waitForMessage();
525648a1c137663ef7207684d0d7009dd5518942111Stephen Hines        pRS.destroy();
526648a1c137663ef7207684d0d7009dd5518942111Stephen Hines    }
527648a1c137663ef7207684d0d7009dd5518942111Stephen Hines}
528