1572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams/*
2572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Copyright (C) 2013 The Android Open Source Project
3572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams *
4572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * you may not use this file except in compliance with the License.
6572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * You may obtain a copy of the License at
7572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams *
8572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams *
10572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Unless required by applicable law or agreed to in writing, software
11572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * See the License for the specific language governing permissions and
14572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * limitations under the License.
15572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams */
16572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
17572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspackage com.android.rs.test_compat;
18572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
19572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.content.Context;
20572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.content.res.Resources;
21572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.support.v8.renderscript.*;
22572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.util.Log;
23572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport java.util.Arrays;
24572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport java.util.Random;
25572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
26572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspublic class UT_math_agree extends UnitTest {
27572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Resources mRes;
28572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Random rand;
29572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
30572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    protected UT_math_agree(RSTestCore rstc, Resources res, Context ctx) {
31572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        super(rstc, "Math Agreement", ctx);
32572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        mRes = res;
33572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        rand = new Random();
34572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
35572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
36572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // packing functions
37572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Float2 pack_f2(float[] val) {
38572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 2;
39572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Float2(val[0], val[1]);
40572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
41572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Float3 pack_f3(float[] val) {
42572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 3;
43572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Float3(val[0], val[1], val[2]);
44572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
45572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Float4 pack_f4(float[] val) {
46572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 4;
47572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Float4(val[0], val[1], val[2], val[3]);
48572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
49572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Byte2 pack_b2(byte[] val) {
50572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 2;
51572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Byte2(val[0], val[1]);
52572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
53572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Byte3 pack_b3(byte[] val) {
54572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 3;
55572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Byte3(val[0], val[1], val[2]);
56572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
57572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Byte4 pack_b4(byte[] val) {
58572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 4;
59572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Byte4(val[0], val[1], val[2], val[3]);
60572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
61572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Short2 pack_s2(short[] val) {
62572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 2;
63572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Short2(val[0], val[1]);
64572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
65572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Short3 pack_s3(short[] val) {
66572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 3;
67572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Short3(val[0], val[1], val[2]);
68572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
69572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Short4 pack_s4(short[] val) {
70572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 4;
71572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Short4(val[0], val[1], val[2], val[3]);
72572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
73572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Int2 pack_i2(int[] val) {
74572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 2;
75572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Int2(val[0], val[1]);
76572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
77572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Int3 pack_i3(int[] val) {
78572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 3;
79572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Int3(val[0], val[1], val[2]);
80572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
81572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Int4 pack_i4(int[] val) {
82572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 4;
83572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Int4(val[0], val[1], val[2], val[3]);
84572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
85572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Long2 pack_l2(long[] val) {
86572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 2;
87572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Long2(val[0], val[1]);
88572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
89572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Long3 pack_l3(long[] val) {
90572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 3;
91572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Long3(val[0], val[1], val[2]);
92572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
93572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private Long4 pack_l4(long[] val) {
94572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert val.length == 4;
95572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return new Long4(val[0], val[1], val[2], val[3]);
96572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
97572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
98572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // random vector generation functions
99572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private float[] randvec_float(int dim) {
100572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float[] fv = new float[dim];
101572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < dim; ++i)
102572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            fv[i] = rand.nextFloat();
103572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return fv;
104572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
105572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private byte[] randvec_char(int dim) {
106572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        byte[] cv = new byte[dim];
107572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        rand.nextBytes(cv);
108572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return cv;
109572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
110572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private short[] randvec_uchar(int dim) {
111572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams       short[] ucv = new short[dim];
112572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams       for (int i = 0; i < dim; ++i)
113572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams           ucv[i] = (short)rand.nextInt(0x1 << 8);
114572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams       return ucv;
115572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
116572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private short[] randvec_short(int dim) {
117572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] sv = new short[dim];
118572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < dim; ++i)
119572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            sv[i] = (short)rand.nextInt(0x1 << 16);
120572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return sv;
121572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
122572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private int[] randvec_ushort(int dim) {
123572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] usv = new int[dim];
124572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < dim; ++i)
125572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            usv[i] = rand.nextInt(0x1 << 16);
126572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return usv;
127572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
128572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private int[] randvec_int(int dim) {
129572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] iv = new int[dim];
130572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < dim; ++i)
131572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            iv[i] = rand.nextInt();
132572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return iv;
133572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
134572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private long[] randvec_uint(int dim) {
135572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] uiv = new long[dim];
136572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < dim; ++i)
137572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            uiv[i] = (long)rand.nextInt() - (long)Integer.MIN_VALUE;
138572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return uiv;
139572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
140572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private long[] randvec_long(int dim) {
141572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] lv = new long[dim];
142572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < dim; ++i)
143572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            lv[i] = rand.nextLong();
144572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return lv;
145572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
146572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // TODO:  unsigned long generator
147572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
148572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // min reference functions
149572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private float min(float v1, float v2) {
150572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return v1 < v2 ? v1 : v2;
151572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
152572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private float[] min(float[] v1, float[] v2) {
153572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert v1.length == v2.length;
154572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float[] rv = new float[v1.length];
155572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < v1.length; ++i)
156572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            rv[i] = min(v1[i], v2[i]);
157572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return rv;
158572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
159572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private byte min(byte v1, byte v2) {
160572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return v1 < v2 ? v1 : v2;
161572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
162572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private byte[] min(byte[] v1, byte[] v2) {
163572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert v1.length == v2.length;
164572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        byte[] rv = new byte[v1.length];
165572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < v1.length; ++i)
166572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            rv[i] = min(v1[i], v2[i]);
167572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return rv;
168572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
169572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private short min(short v1, short v2) {
170572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return v1 < v2 ? v1 : v2;
171572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
172572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private short[] min(short[] v1, short[] v2) {
173572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert v1.length == v2.length;
174572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rv = new short[v1.length];
175572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < v1.length; ++i)
176572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            rv[i] = min(v1[i], v2[i]);
177572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return rv;
178572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
179572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private int min(int v1, int v2) {
180572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return v1 < v2 ? v1 : v2;
181572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
182572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private int[] min(int[] v1, int[] v2) {
183572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert v1.length == v2.length;
184572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rv = new int[v1.length];
185572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < v1.length; ++i)
186572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            rv[i] = min(v1[i], v2[i]);
187572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return rv;
188572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
189572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private long min(long v1, long v2) {
190572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return v1 < v2 ? v1 : v2;
191572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
192572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private long[] min(long[] v1, long[] v2) {
193572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert v1.length == v2.length;
194572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rv = new long[v1.length];
195572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < v1.length; ++i)
196572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            rv[i] = min(v1[i], v2[i]);
197572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return rv;
198572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
199572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // TODO:  unsigned long version of min
200572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
201572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // max reference functions
202572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private float max(float v1, float v2) {
203572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return v1 > v2 ? v1 : v2;
204572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
205572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private float[] max(float[] v1, float[] v2) {
206572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert v1.length == v2.length;
207572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float[] rv = new float[v1.length];
208572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < v1.length; ++i)
209572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            rv[i] = max(v1[i], v2[i]);
210572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return rv;
211572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
212572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private byte max(byte v1, byte v2) {
213572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return v1 > v2 ? v1 : v2;
214572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
215572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private byte[] max(byte[] v1, byte[] v2) {
216572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert v1.length == v2.length;
217572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        byte[] rv = new byte[v1.length];
218572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < v1.length; ++i)
219572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            rv[i] = max(v1[i], v2[i]);
220572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return rv;
221572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
222572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private short max(short v1, short v2) {
223572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return v1 > v2 ? v1 : v2;
224572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
225572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private short[] max(short[] v1, short[] v2) {
226572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert v1.length == v2.length;
227572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rv = new short[v1.length];
228572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < v1.length; ++i)
229572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            rv[i] = max(v1[i], v2[i]);
230572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return rv;
231572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
232572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private int max(int v1, int v2) {
233572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return v1 > v2 ? v1 : v2;
234572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
235572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private int[] max(int[] v1, int[] v2) {
236572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert v1.length == v2.length;
237572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rv = new int[v1.length];
238572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < v1.length; ++i)
239572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            rv[i] = max(v1[i], v2[i]);
240572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return rv;
241572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
242572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private long max(long v1, long v2) {
243572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return v1 > v2 ? v1 : v2;
244572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
245572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private long[] max(long[] v1, long[] v2) {
246572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assert v1.length == v2.length;
247572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rv = new long[v1.length];
248572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < v1.length; ++i)
249572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            rv[i] = max(v1[i], v2[i]);
250572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return rv;
251572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
252572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // TODO:  unsigned long version of max
253572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
254572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // fmin reference functions
255572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private float fmin(float v1, float v2) {
256572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return min(v1, v2);
257572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
258572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private float[] fmin(float[] v1, float[] v2) {
259572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return min(v1, v2);
260572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
261572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private float[] fmin(float[] v1, float v2) {
262572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float[] rv = new float[v1.length];
263572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < v1.length; ++i)
264572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            rv[i] = min(v1[i], v2);
265572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return rv;
266572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
267572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
268572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // fmax reference functions
269572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private float fmax(float v1, float v2) {
270572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return max(v1, v2);
271572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
272572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private float[] fmax(float[] v1, float[] v2) {
273572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return max(v1, v2);
274572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
275572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private float[] fmax(float[] v1, float v2) {
276572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float[] rv = new float[v1.length];
277572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < v1.length; ++i)
278572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            rv[i] = max(v1[i], v2);
279572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        return rv;
280572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
281572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
282572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private void initializeValues(ScriptC_math_agree s) {
283572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float x = rand.nextFloat();
284572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float y = rand.nextFloat();
285572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
286572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_x(x);
287572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_y(y);
288572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_result_add(x + y);
289572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_result_sub(x - y);
290572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_result_mul(x * y);
291572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_result_div(x / y);
292572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
293572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        // Generate random vectors of all types
294572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float rand_f1_0 = rand.nextFloat();
295572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float[] rand_f2_0 = randvec_float(2);
296572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float[] rand_f3_0 = randvec_float(3);
297572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float[] rand_f4_0 = randvec_float(4);
298572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float rand_f1_1 = rand.nextFloat();
299572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float[] rand_f2_1 = randvec_float(2);
300572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float[] rand_f3_1 = randvec_float(3);
301572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float[] rand_f4_1 = randvec_float(4);
302572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short rand_uc1_0 = (short)rand.nextInt(0x1 << 8);
303572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rand_uc2_0 = randvec_uchar(2);
304572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rand_uc3_0 = randvec_uchar(3);
305572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rand_uc4_0 = randvec_uchar(4);
306572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short rand_uc1_1 = (short)rand.nextInt(0x1 << 8);
307572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rand_uc2_1 = randvec_uchar(2);
308572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rand_uc3_1 = randvec_uchar(3);
309572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rand_uc4_1 = randvec_uchar(4);
310572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short rand_ss1_0 = (short)rand.nextInt(0x1 << 16);
311572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rand_ss2_0 = randvec_short(2);
312572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rand_ss3_0 = randvec_short(3);
313572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rand_ss4_0 = randvec_short(4);
314572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short rand_ss1_1 = (short)rand.nextInt(0x1 << 16);
315572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rand_ss2_1 = randvec_short(2);
316572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rand_ss3_1 = randvec_short(3);
317572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        short[] rand_ss4_1 = randvec_short(4);
318572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int rand_us1_0 = rand.nextInt(0x1 << 16);
319572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rand_us2_0 = randvec_ushort(2);
320572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rand_us3_0 = randvec_ushort(3);
321572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rand_us4_0 = randvec_ushort(4);
322572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int rand_us1_1 = rand.nextInt(0x1 << 16);
323572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rand_us2_1 = randvec_ushort(2);
324572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rand_us3_1 = randvec_ushort(3);
325572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rand_us4_1 = randvec_ushort(4);
326572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int rand_si1_0 = rand.nextInt();
327572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rand_si2_0 = randvec_int(2);
328572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rand_si3_0 = randvec_int(3);
329572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rand_si4_0 = randvec_int(4);
330572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int rand_si1_1 = rand.nextInt();
331572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rand_si2_1 = randvec_int(2);
332572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rand_si3_1 = randvec_int(3);
333572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        int[] rand_si4_1 = randvec_int(4);
334572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long rand_ui1_0 = (long)rand.nextInt() - (long)Integer.MIN_VALUE;
335572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rand_ui2_0 = randvec_uint(2);
336572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rand_ui3_0 = randvec_uint(3);
337572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rand_ui4_0 = randvec_uint(4);
338572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long rand_ui1_1 = (long)rand.nextInt() - (long)Integer.MIN_VALUE;
339572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rand_ui2_1 = randvec_uint(2);
340572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rand_ui3_1 = randvec_uint(3);
341572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rand_ui4_1 = randvec_uint(4);
342572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long rand_sl1_0 = rand.nextLong();
343572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rand_sl2_0 = randvec_long(2);
344572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rand_sl3_0 = randvec_long(3);
345572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rand_sl4_0 = randvec_long(4);
346572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long rand_sl1_1 = rand.nextLong();
347572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rand_sl2_1 = randvec_long(2);
348572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rand_sl3_1 = randvec_long(3);
349572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        long[] rand_sl4_1 = randvec_long(4);
350572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        byte rand_sc1_0 = (byte)rand.nextInt(0x1 << 8);
351572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        byte[] rand_sc2_0 = randvec_char(2);
352572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        byte[] rand_sc3_0 = randvec_char(3);
353572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        byte[] rand_sc4_0 = randvec_char(4);
354572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        byte rand_sc1_1 = (byte)rand.nextInt(0x1 << 8);
355572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        byte[] rand_sc2_1 = randvec_char(2);
356572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        byte[] rand_sc3_1 = randvec_char(3);
357572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        byte[] rand_sc4_1 = randvec_char(4);
358572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        // TODO:  generate unsigned long vectors
359572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
360572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        // Set random vectors in renderscript code
361572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_f1_0(rand_f1_0);
362572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_f2_0(pack_f2(rand_f2_0));
363572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_f3_0(pack_f3(rand_f3_0));
364572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_f4_0(pack_f4(rand_f4_0));
365572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_f1_1(rand_f1_1);
366572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_f2_1(pack_f2(rand_f2_1));
367572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_f3_1(pack_f3(rand_f3_1));
368572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_f4_1(pack_f4(rand_f4_1));
369572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_uc1_1(rand_uc1_1);
370572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_uc2_1(pack_s2(rand_uc2_1));
371572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_uc3_1(pack_s3(rand_uc3_1));
372572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_uc4_1(pack_s4(rand_uc4_1));
373572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ss1_0(rand_ss1_0);
374572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ss2_0(pack_s2(rand_ss2_0));
375572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ss3_0(pack_s3(rand_ss3_0));
376572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ss4_0(pack_s4(rand_ss4_0));
377572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ss1_1(rand_ss1_1);
378572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ss2_1(pack_s2(rand_ss2_1));
379572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ss3_1(pack_s3(rand_ss3_1));
380572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ss4_1(pack_s4(rand_ss4_1));
381572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_us1_0(rand_us1_0);
382572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_us2_0(pack_i2(rand_us2_0));
383572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_us3_0(pack_i3(rand_us3_0));
384572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_us4_0(pack_i4(rand_us4_0));
385572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_us1_1(rand_us1_1);
386572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_us2_1(pack_i2(rand_us2_1));
387572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_us3_1(pack_i3(rand_us3_1));
388572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_us4_1(pack_i4(rand_us4_1));
389572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_si1_0(rand_si1_0);
390572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_si2_0(pack_i2(rand_si2_0));
391572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_si3_0(pack_i3(rand_si3_0));
392572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_si4_0(pack_i4(rand_si4_0));
393572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_si1_1(rand_si1_1);
394572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_si2_1(pack_i2(rand_si2_1));
395572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_si3_1(pack_i3(rand_si3_1));
396572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_si4_1(pack_i4(rand_si4_1));
397572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ui1_0(rand_ui1_0);
398572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ui2_0(pack_l2(rand_ui2_0));
399572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ui3_0(pack_l3(rand_ui3_0));
400572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ui4_0(pack_l4(rand_ui4_0));
401572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ui1_1(rand_ui1_1);
402572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ui2_1(pack_l2(rand_ui2_1));
403572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ui3_1(pack_l3(rand_ui3_1));
404572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_ui4_1(pack_l4(rand_ui4_1));
405572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sl1_0(rand_sl1_0);
406572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sl2_0(pack_l2(rand_sl2_0));
407572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sl3_0(pack_l3(rand_sl3_0));
408572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sl4_0(pack_l4(rand_sl4_0));
409572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sl1_1(rand_sl1_1);
410572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sl2_1(pack_l2(rand_sl2_1));
411572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sl3_1(pack_l3(rand_sl3_1));
412572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sl4_1(pack_l4(rand_sl4_1));
413572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_uc1_0(rand_uc1_0);
414572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_uc2_0(pack_s2(rand_uc2_0));
415572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_uc3_0(pack_s3(rand_uc3_0));
416572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_uc4_0(pack_s4(rand_uc4_0));
417572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sc1_0(rand_sc1_0);
418572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sc2_0(pack_b2(rand_sc2_0));
419572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sc3_0(pack_b3(rand_sc3_0));
420572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sc4_0(pack_b4(rand_sc4_0));
421572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sc1_1(rand_sc1_1);
422572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sc2_1(pack_b2(rand_sc2_1));
423572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sc3_1(pack_b3(rand_sc3_1));
424572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_rand_sc4_1(pack_b4(rand_sc4_1));
425572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        // TODO:  set unsigned long vectors
426572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
427572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        // Set results for min
428572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_f1_f1(min(rand_f1_0, rand_f1_1));
429572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_f2_f2(pack_f2(min(rand_f2_0, rand_f2_1)));
430572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_f3_f3(pack_f3(min(rand_f3_0, rand_f3_1)));
431572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_f4_f4(pack_f4(min(rand_f4_0, rand_f4_1)));
432572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_uc1_uc1(min(rand_uc1_0, rand_uc1_1));
433572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_uc2_uc2(pack_s2(min(rand_uc2_0, rand_uc2_1)));
434572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_uc3_uc3(pack_s3(min(rand_uc3_0, rand_uc3_1)));
435572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_uc4_uc4(pack_s4(min(rand_uc4_0, rand_uc4_1)));
436572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_ss1_ss1(min(rand_ss1_0, rand_ss1_1));
437572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_ss2_ss2(pack_s2(min(rand_ss2_0, rand_ss2_1)));
438572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_ss3_ss3(pack_s3(min(rand_ss3_0, rand_ss3_1)));
439572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_ss4_ss4(pack_s4(min(rand_ss4_0, rand_ss4_1)));
440572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_us1_us1(min(rand_us1_0, rand_us1_1));
441572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_us2_us2(pack_i2(min(rand_us2_0, rand_us2_1)));
442572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_us3_us3(pack_i3(min(rand_us3_0, rand_us3_1)));
443572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_us4_us4(pack_i4(min(rand_us4_0, rand_us4_1)));
444572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_si1_si1(min(rand_si1_0, rand_si1_1));
445572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_si2_si2(pack_i2(min(rand_si2_0, rand_si2_1)));
446572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_si3_si3(pack_i3(min(rand_si3_0, rand_si3_1)));
447572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_si4_si4(pack_i4(min(rand_si4_0, rand_si4_1)));
448572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_ui1_ui1(min(rand_ui1_0, rand_ui1_1));
449572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_ui2_ui2(pack_l2(min(rand_ui2_0, rand_ui2_1)));
450572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_ui3_ui3(pack_l3(min(rand_ui3_0, rand_ui3_1)));
451572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_ui4_ui4(pack_l4(min(rand_ui4_0, rand_ui4_1)));
452572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_sl1_sl1(min(rand_sl1_0, rand_sl1_1));
453572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_sl2_sl2(pack_l2(min(rand_sl2_0, rand_sl2_1)));
454572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_sl3_sl3(pack_l3(min(rand_sl3_0, rand_sl3_1)));
455572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_sl4_sl4(pack_l4(min(rand_sl4_0, rand_sl4_1)));
456572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_sc1_sc1(min(rand_sc1_0, rand_sc1_1));
457572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_sc2_sc2(pack_b2(min(rand_sc2_0, rand_sc2_1)));
458572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_sc3_sc3(pack_b3(min(rand_sc3_0, rand_sc3_1)));
459572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_min_rand_sc4_sc4(pack_b4(min(rand_sc4_0, rand_sc4_1)));
460572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        // TODO:  set results for unsigned long min
461572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
462572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        // Set results for max
463572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_f1_f1(max(rand_f1_0, rand_f1_1));
464572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_f2_f2(pack_f2(max(rand_f2_0, rand_f2_1)));
465572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_f3_f3(pack_f3(max(rand_f3_0, rand_f3_1)));
466572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_f4_f4(pack_f4(max(rand_f4_0, rand_f4_1)));
467572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_uc1_uc1(max(rand_uc1_0, rand_uc1_1));
468572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_uc2_uc2(pack_s2(max(rand_uc2_0, rand_uc2_1)));
469572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_uc3_uc3(pack_s3(max(rand_uc3_0, rand_uc3_1)));
470572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_uc4_uc4(pack_s4(max(rand_uc4_0, rand_uc4_1)));
471572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_ss1_ss1(max(rand_ss1_0, rand_ss1_1));
472572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_ss2_ss2(pack_s2(max(rand_ss2_0, rand_ss2_1)));
473572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_ss3_ss3(pack_s3(max(rand_ss3_0, rand_ss3_1)));
474572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_ss4_ss4(pack_s4(max(rand_ss4_0, rand_ss4_1)));
475572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_us1_us1(max(rand_us1_0, rand_us1_1));
476572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_us2_us2(pack_i2(max(rand_us2_0, rand_us2_1)));
477572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_us3_us3(pack_i3(max(rand_us3_0, rand_us3_1)));
478572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_us4_us4(pack_i4(max(rand_us4_0, rand_us4_1)));
479572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_si1_si1(max(rand_si1_0, rand_si1_1));
480572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_si2_si2(pack_i2(max(rand_si2_0, rand_si2_1)));
481572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_si3_si3(pack_i3(max(rand_si3_0, rand_si3_1)));
482572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_si4_si4(pack_i4(max(rand_si4_0, rand_si4_1)));
483572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_ui1_ui1(max(rand_ui1_0, rand_ui1_1));
484572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_ui2_ui2(pack_l2(max(rand_ui2_0, rand_ui2_1)));
485572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_ui3_ui3(pack_l3(max(rand_ui3_0, rand_ui3_1)));
486572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_ui4_ui4(pack_l4(max(rand_ui4_0, rand_ui4_1)));
487572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_sl1_sl1(max(rand_sl1_0, rand_sl1_1));
488572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_sl2_sl2(pack_l2(max(rand_sl2_0, rand_sl2_1)));
489572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_sl3_sl3(pack_l3(max(rand_sl3_0, rand_sl3_1)));
490572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_sl4_sl4(pack_l4(max(rand_sl4_0, rand_sl4_1)));
491572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_sc1_sc1(max(rand_sc1_0, rand_sc1_1));
492572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_sc2_sc2(pack_b2(max(rand_sc2_0, rand_sc2_1)));
493572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_sc3_sc3(pack_b3(max(rand_sc3_0, rand_sc3_1)));
494572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_max_rand_sc4_sc4(pack_b4(max(rand_sc4_0, rand_sc4_1)));
495572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
496572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        // TODO:  set results for unsigned long max
497572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
498572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        // Set results for fmin
499572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmin_rand_f1_f1(fmin(rand_f1_0, rand_f1_1));
500572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmin_rand_f2_f2(pack_f2(fmin(rand_f2_0, rand_f2_1)));
501572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmin_rand_f3_f3(pack_f3(fmin(rand_f3_0, rand_f3_1)));
502572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmin_rand_f4_f4(pack_f4(fmin(rand_f4_0, rand_f4_1)));
503572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmin_rand_f2_f1(pack_f2(fmin(rand_f2_0, rand_f1_1)));
504572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmin_rand_f3_f1(pack_f3(fmin(rand_f3_0, rand_f1_1)));
505572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmin_rand_f4_f1(pack_f4(fmin(rand_f4_0, rand_f1_1)));
506572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
507572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        // Set results for fmax
508572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmax_rand_f1_f1(fmax(rand_f1_0, rand_f1_1));
509572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmax_rand_f2_f2(pack_f2(fmax(rand_f2_0, rand_f2_1)));
510572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmax_rand_f3_f3(pack_f3(fmax(rand_f3_0, rand_f3_1)));
511572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmax_rand_f4_f4(pack_f4(fmax(rand_f4_0, rand_f4_1)));
512572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmax_rand_f2_f1(pack_f2(fmax(rand_f2_0, rand_f1_1)));
513572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmax_rand_f3_f1(pack_f3(fmax(rand_f3_0, rand_f1_1)));
514572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.set_fmax_rand_f4_f1(pack_f4(fmax(rand_f4_0, rand_f1_1)));
515572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
516572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
517572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void run() {
518572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        RenderScript pRS = RenderScript.create(mCtx);
519572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        ScriptC_math_agree s = new ScriptC_math_agree(pRS);
520572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        pRS.setMessageHandler(mRsMessage);
521572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        initializeValues(s);
522572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        s.invoke_math_agree_test();
523572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        pRS.finish();
524572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        waitForMessage();
525572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        pRS.destroy();
526572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
527572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams}
528