/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainder.java
https://gitlab.com/chprasanna93/platform_cts · Java · 716 lines · 650 code · 26 blank · 40 comment · 48 complexity · b6abc376563530e182aba49274c8e438 MD5 · raw file
- /*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- // Don't edit this file! It is auto-generated by frameworks/rs/api/generate.sh.
- package android.renderscript.cts;
- import android.renderscript.Allocation;
- import android.renderscript.RSRuntimeException;
- import android.renderscript.Element;
- import android.renderscript.cts.Target;
- import java.util.Arrays;
- public class TestRemainder extends RSBaseCompute {
- private ScriptC_TestRemainder script;
- private ScriptC_TestRemainderRelaxed scriptRelaxed;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- script = new ScriptC_TestRemainder(mRS);
- scriptRelaxed = new ScriptC_TestRemainderRelaxed(mRS);
- }
- public class ArgumentsFloatFloatFloat {
- public float inNumerator;
- public float inDenominator;
- public Target.Floaty out;
- }
- private void checkRemainderFloatFloatFloat() {
- Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x317ea229l, false);
- Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe2ebe35al, false);
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
- script.set_gAllocInDenominator(inDenominator);
- script.forEach_testRemainderFloatFloatFloat(inNumerator, out);
- verifyResultsRemainderFloatFloatFloat(inNumerator, inDenominator, out, false);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderFloatFloatFloat: " + e.toString());
- }
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
- scriptRelaxed.set_gAllocInDenominator(inDenominator);
- scriptRelaxed.forEach_testRemainderFloatFloatFloat(inNumerator, out);
- verifyResultsRemainderFloatFloatFloat(inNumerator, inDenominator, out, true);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderFloatFloatFloat: " + e.toString());
- }
- }
- private void verifyResultsRemainderFloatFloatFloat(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
- float[] arrayInNumerator = new float[INPUTSIZE * 1];
- Arrays.fill(arrayInNumerator, (float) 42);
- inNumerator.copyTo(arrayInNumerator);
- float[] arrayInDenominator = new float[INPUTSIZE * 1];
- Arrays.fill(arrayInDenominator, (float) 42);
- inDenominator.copyTo(arrayInDenominator);
- float[] arrayOut = new float[INPUTSIZE * 1];
- Arrays.fill(arrayOut, (float) 42);
- out.copyTo(arrayOut);
- StringBuilder message = new StringBuilder();
- boolean errorFound = false;
- for (int i = 0; i < INPUTSIZE; i++) {
- for (int j = 0; j < 1 ; j++) {
- // Extract the inputs.
- ArgumentsFloatFloatFloat args = new ArgumentsFloatFloatFloat();
- args.inNumerator = arrayInNumerator[i];
- args.inDenominator = arrayInDenominator[i];
- // Figure out what the outputs should have been.
- Target target = new Target(Target.FunctionType.NORMAL, Target.ReturnType.FLOAT, relaxed);
- CoreMathVerifier.computeRemainder(args, target);
- // Validate the outputs.
- boolean valid = true;
- if (!args.out.couldBe(arrayOut[i * 1 + j])) {
- valid = false;
- }
- if (!valid) {
- if (!errorFound) {
- errorFound = true;
- message.append("Input inNumerator: ");
- appendVariableToMessage(message, args.inNumerator);
- message.append("\n");
- message.append("Input inDenominator: ");
- appendVariableToMessage(message, args.inDenominator);
- message.append("\n");
- message.append("Expected output out: ");
- appendVariableToMessage(message, args.out);
- message.append("\n");
- message.append("Actual output out: ");
- appendVariableToMessage(message, arrayOut[i * 1 + j]);
- if (!args.out.couldBe(arrayOut[i * 1 + j])) {
- message.append(" FAIL");
- }
- message.append("\n");
- message.append("Errors at");
- }
- message.append(" [");
- message.append(Integer.toString(i));
- message.append(", ");
- message.append(Integer.toString(j));
- message.append("]");
- }
- }
- }
- assertFalse("Incorrect output for checkRemainderFloatFloatFloat" +
- (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
- }
- private void checkRemainderFloat2Float2Float2() {
- Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3fdcf8d5l, false);
- Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xaa4be3a6l, false);
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
- script.set_gAllocInDenominator(inDenominator);
- script.forEach_testRemainderFloat2Float2Float2(inNumerator, out);
- verifyResultsRemainderFloat2Float2Float2(inNumerator, inDenominator, out, false);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderFloat2Float2Float2: " + e.toString());
- }
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
- scriptRelaxed.set_gAllocInDenominator(inDenominator);
- scriptRelaxed.forEach_testRemainderFloat2Float2Float2(inNumerator, out);
- verifyResultsRemainderFloat2Float2Float2(inNumerator, inDenominator, out, true);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderFloat2Float2Float2: " + e.toString());
- }
- }
- private void verifyResultsRemainderFloat2Float2Float2(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
- float[] arrayInNumerator = new float[INPUTSIZE * 2];
- Arrays.fill(arrayInNumerator, (float) 42);
- inNumerator.copyTo(arrayInNumerator);
- float[] arrayInDenominator = new float[INPUTSIZE * 2];
- Arrays.fill(arrayInDenominator, (float) 42);
- inDenominator.copyTo(arrayInDenominator);
- float[] arrayOut = new float[INPUTSIZE * 2];
- Arrays.fill(arrayOut, (float) 42);
- out.copyTo(arrayOut);
- StringBuilder message = new StringBuilder();
- boolean errorFound = false;
- for (int i = 0; i < INPUTSIZE; i++) {
- for (int j = 0; j < 2 ; j++) {
- // Extract the inputs.
- ArgumentsFloatFloatFloat args = new ArgumentsFloatFloatFloat();
- args.inNumerator = arrayInNumerator[i * 2 + j];
- args.inDenominator = arrayInDenominator[i * 2 + j];
- // Figure out what the outputs should have been.
- Target target = new Target(Target.FunctionType.NORMAL, Target.ReturnType.FLOAT, relaxed);
- CoreMathVerifier.computeRemainder(args, target);
- // Validate the outputs.
- boolean valid = true;
- if (!args.out.couldBe(arrayOut[i * 2 + j])) {
- valid = false;
- }
- if (!valid) {
- if (!errorFound) {
- errorFound = true;
- message.append("Input inNumerator: ");
- appendVariableToMessage(message, args.inNumerator);
- message.append("\n");
- message.append("Input inDenominator: ");
- appendVariableToMessage(message, args.inDenominator);
- message.append("\n");
- message.append("Expected output out: ");
- appendVariableToMessage(message, args.out);
- message.append("\n");
- message.append("Actual output out: ");
- appendVariableToMessage(message, arrayOut[i * 2 + j]);
- if (!args.out.couldBe(arrayOut[i * 2 + j])) {
- message.append(" FAIL");
- }
- message.append("\n");
- message.append("Errors at");
- }
- message.append(" [");
- message.append(Integer.toString(i));
- message.append(", ");
- message.append(Integer.toString(j));
- message.append("]");
- }
- }
- }
- assertFalse("Incorrect output for checkRemainderFloat2Float2Float2" +
- (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
- }
- private void checkRemainderFloat3Float3Float3() {
- Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe2a8e4d6l, false);
- Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x7d2776dfl, false);
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
- script.set_gAllocInDenominator(inDenominator);
- script.forEach_testRemainderFloat3Float3Float3(inNumerator, out);
- verifyResultsRemainderFloat3Float3Float3(inNumerator, inDenominator, out, false);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderFloat3Float3Float3: " + e.toString());
- }
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
- scriptRelaxed.set_gAllocInDenominator(inDenominator);
- scriptRelaxed.forEach_testRemainderFloat3Float3Float3(inNumerator, out);
- verifyResultsRemainderFloat3Float3Float3(inNumerator, inDenominator, out, true);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderFloat3Float3Float3: " + e.toString());
- }
- }
- private void verifyResultsRemainderFloat3Float3Float3(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
- float[] arrayInNumerator = new float[INPUTSIZE * 4];
- Arrays.fill(arrayInNumerator, (float) 42);
- inNumerator.copyTo(arrayInNumerator);
- float[] arrayInDenominator = new float[INPUTSIZE * 4];
- Arrays.fill(arrayInDenominator, (float) 42);
- inDenominator.copyTo(arrayInDenominator);
- float[] arrayOut = new float[INPUTSIZE * 4];
- Arrays.fill(arrayOut, (float) 42);
- out.copyTo(arrayOut);
- StringBuilder message = new StringBuilder();
- boolean errorFound = false;
- for (int i = 0; i < INPUTSIZE; i++) {
- for (int j = 0; j < 3 ; j++) {
- // Extract the inputs.
- ArgumentsFloatFloatFloat args = new ArgumentsFloatFloatFloat();
- args.inNumerator = arrayInNumerator[i * 4 + j];
- args.inDenominator = arrayInDenominator[i * 4 + j];
- // Figure out what the outputs should have been.
- Target target = new Target(Target.FunctionType.NORMAL, Target.ReturnType.FLOAT, relaxed);
- CoreMathVerifier.computeRemainder(args, target);
- // Validate the outputs.
- boolean valid = true;
- if (!args.out.couldBe(arrayOut[i * 4 + j])) {
- valid = false;
- }
- if (!valid) {
- if (!errorFound) {
- errorFound = true;
- message.append("Input inNumerator: ");
- appendVariableToMessage(message, args.inNumerator);
- message.append("\n");
- message.append("Input inDenominator: ");
- appendVariableToMessage(message, args.inDenominator);
- message.append("\n");
- message.append("Expected output out: ");
- appendVariableToMessage(message, args.out);
- message.append("\n");
- message.append("Actual output out: ");
- appendVariableToMessage(message, arrayOut[i * 4 + j]);
- if (!args.out.couldBe(arrayOut[i * 4 + j])) {
- message.append(" FAIL");
- }
- message.append("\n");
- message.append("Errors at");
- }
- message.append(" [");
- message.append(Integer.toString(i));
- message.append(", ");
- message.append(Integer.toString(j));
- message.append("]");
- }
- }
- }
- assertFalse("Incorrect output for checkRemainderFloat3Float3Float3" +
- (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
- }
- private void checkRemainderFloat4Float4Float4() {
- Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8574d0d7l, false);
- Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x50030a18l, false);
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
- script.set_gAllocInDenominator(inDenominator);
- script.forEach_testRemainderFloat4Float4Float4(inNumerator, out);
- verifyResultsRemainderFloat4Float4Float4(inNumerator, inDenominator, out, false);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderFloat4Float4Float4: " + e.toString());
- }
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
- scriptRelaxed.set_gAllocInDenominator(inDenominator);
- scriptRelaxed.forEach_testRemainderFloat4Float4Float4(inNumerator, out);
- verifyResultsRemainderFloat4Float4Float4(inNumerator, inDenominator, out, true);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderFloat4Float4Float4: " + e.toString());
- }
- }
- private void verifyResultsRemainderFloat4Float4Float4(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
- float[] arrayInNumerator = new float[INPUTSIZE * 4];
- Arrays.fill(arrayInNumerator, (float) 42);
- inNumerator.copyTo(arrayInNumerator);
- float[] arrayInDenominator = new float[INPUTSIZE * 4];
- Arrays.fill(arrayInDenominator, (float) 42);
- inDenominator.copyTo(arrayInDenominator);
- float[] arrayOut = new float[INPUTSIZE * 4];
- Arrays.fill(arrayOut, (float) 42);
- out.copyTo(arrayOut);
- StringBuilder message = new StringBuilder();
- boolean errorFound = false;
- for (int i = 0; i < INPUTSIZE; i++) {
- for (int j = 0; j < 4 ; j++) {
- // Extract the inputs.
- ArgumentsFloatFloatFloat args = new ArgumentsFloatFloatFloat();
- args.inNumerator = arrayInNumerator[i * 4 + j];
- args.inDenominator = arrayInDenominator[i * 4 + j];
- // Figure out what the outputs should have been.
- Target target = new Target(Target.FunctionType.NORMAL, Target.ReturnType.FLOAT, relaxed);
- CoreMathVerifier.computeRemainder(args, target);
- // Validate the outputs.
- boolean valid = true;
- if (!args.out.couldBe(arrayOut[i * 4 + j])) {
- valid = false;
- }
- if (!valid) {
- if (!errorFound) {
- errorFound = true;
- message.append("Input inNumerator: ");
- appendVariableToMessage(message, args.inNumerator);
- message.append("\n");
- message.append("Input inDenominator: ");
- appendVariableToMessage(message, args.inDenominator);
- message.append("\n");
- message.append("Expected output out: ");
- appendVariableToMessage(message, args.out);
- message.append("\n");
- message.append("Actual output out: ");
- appendVariableToMessage(message, arrayOut[i * 4 + j]);
- if (!args.out.couldBe(arrayOut[i * 4 + j])) {
- message.append(" FAIL");
- }
- message.append("\n");
- message.append("Errors at");
- }
- message.append(" [");
- message.append(Integer.toString(i));
- message.append(", ");
- message.append(Integer.toString(j));
- message.append("]");
- }
- }
- }
- assertFalse("Incorrect output for checkRemainderFloat4Float4Float4" +
- (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
- }
- public class ArgumentsHalfHalfHalf {
- public short inNumerator;
- public double inNumeratorDouble;
- public short inDenominator;
- public double inDenominatorDouble;
- public Target.Floaty out;
- }
- private void checkRemainderHalfHalfHalf() {
- Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_16, 1, 0xcd987ebel, false);
- Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_16, 1, 0x59b61387l, false);
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_16, 1), INPUTSIZE);
- script.set_gAllocInDenominator(inDenominator);
- script.forEach_testRemainderHalfHalfHalf(inNumerator, out);
- verifyResultsRemainderHalfHalfHalf(inNumerator, inDenominator, out, false);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderHalfHalfHalf: " + e.toString());
- }
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_16, 1), INPUTSIZE);
- scriptRelaxed.set_gAllocInDenominator(inDenominator);
- scriptRelaxed.forEach_testRemainderHalfHalfHalf(inNumerator, out);
- verifyResultsRemainderHalfHalfHalf(inNumerator, inDenominator, out, true);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderHalfHalfHalf: " + e.toString());
- }
- }
- private void verifyResultsRemainderHalfHalfHalf(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
- short[] arrayInNumerator = new short[INPUTSIZE * 1];
- Arrays.fill(arrayInNumerator, (short) 42);
- inNumerator.copyTo(arrayInNumerator);
- short[] arrayInDenominator = new short[INPUTSIZE * 1];
- Arrays.fill(arrayInDenominator, (short) 42);
- inDenominator.copyTo(arrayInDenominator);
- short[] arrayOut = new short[INPUTSIZE * 1];
- Arrays.fill(arrayOut, (short) 42);
- out.copyTo(arrayOut);
- StringBuilder message = new StringBuilder();
- boolean errorFound = false;
- for (int i = 0; i < INPUTSIZE; i++) {
- for (int j = 0; j < 1 ; j++) {
- // Extract the inputs.
- ArgumentsHalfHalfHalf args = new ArgumentsHalfHalfHalf();
- args.inNumerator = arrayInNumerator[i];
- args.inNumeratorDouble = Float16Utils.convertFloat16ToDouble(args.inNumerator);
- args.inDenominator = arrayInDenominator[i];
- args.inDenominatorDouble = Float16Utils.convertFloat16ToDouble(args.inDenominator);
- // Figure out what the outputs should have been.
- Target target = new Target(Target.FunctionType.NORMAL, Target.ReturnType.HALF, relaxed);
- CoreMathVerifier.computeRemainder(args, target);
- // Validate the outputs.
- boolean valid = true;
- if (!args.out.couldBe(Float16Utils.convertFloat16ToDouble(arrayOut[i * 1 + j]))) {
- valid = false;
- }
- if (!valid) {
- if (!errorFound) {
- errorFound = true;
- message.append("Input inNumerator: ");
- appendVariableToMessage(message, args.inNumerator);
- message.append("\n");
- message.append("Input inDenominator: ");
- appendVariableToMessage(message, args.inDenominator);
- message.append("\n");
- message.append("Expected output out: ");
- appendVariableToMessage(message, args.out);
- message.append("\n");
- message.append("Actual output out: ");
- appendVariableToMessage(message, arrayOut[i * 1 + j]);
- message.append("\n");
- message.append("Actual output out (in double): ");
- appendVariableToMessage(message, Float16Utils.convertFloat16ToDouble(arrayOut[i * 1 + j]));
- if (!args.out.couldBe(Float16Utils.convertFloat16ToDouble(arrayOut[i * 1 + j]))) {
- message.append(" FAIL");
- }
- message.append("\n");
- message.append("Errors at");
- }
- message.append(" [");
- message.append(Integer.toString(i));
- message.append(", ");
- message.append(Integer.toString(j));
- message.append("]");
- }
- }
- }
- assertFalse("Incorrect output for checkRemainderHalfHalfHalf" +
- (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
- }
- private void checkRemainderHalf2Half2Half2() {
- Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_16, 2, 0x3b2e47fel, false);
- Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_16, 2, 0xd890a2c7l, false);
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_16, 2), INPUTSIZE);
- script.set_gAllocInDenominator(inDenominator);
- script.forEach_testRemainderHalf2Half2Half2(inNumerator, out);
- verifyResultsRemainderHalf2Half2Half2(inNumerator, inDenominator, out, false);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderHalf2Half2Half2: " + e.toString());
- }
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_16, 2), INPUTSIZE);
- scriptRelaxed.set_gAllocInDenominator(inDenominator);
- scriptRelaxed.forEach_testRemainderHalf2Half2Half2(inNumerator, out);
- verifyResultsRemainderHalf2Half2Half2(inNumerator, inDenominator, out, true);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderHalf2Half2Half2: " + e.toString());
- }
- }
- private void verifyResultsRemainderHalf2Half2Half2(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
- short[] arrayInNumerator = new short[INPUTSIZE * 2];
- Arrays.fill(arrayInNumerator, (short) 42);
- inNumerator.copyTo(arrayInNumerator);
- short[] arrayInDenominator = new short[INPUTSIZE * 2];
- Arrays.fill(arrayInDenominator, (short) 42);
- inDenominator.copyTo(arrayInDenominator);
- short[] arrayOut = new short[INPUTSIZE * 2];
- Arrays.fill(arrayOut, (short) 42);
- out.copyTo(arrayOut);
- StringBuilder message = new StringBuilder();
- boolean errorFound = false;
- for (int i = 0; i < INPUTSIZE; i++) {
- for (int j = 0; j < 2 ; j++) {
- // Extract the inputs.
- ArgumentsHalfHalfHalf args = new ArgumentsHalfHalfHalf();
- args.inNumerator = arrayInNumerator[i * 2 + j];
- args.inNumeratorDouble = Float16Utils.convertFloat16ToDouble(args.inNumerator);
- args.inDenominator = arrayInDenominator[i * 2 + j];
- args.inDenominatorDouble = Float16Utils.convertFloat16ToDouble(args.inDenominator);
- // Figure out what the outputs should have been.
- Target target = new Target(Target.FunctionType.NORMAL, Target.ReturnType.HALF, relaxed);
- CoreMathVerifier.computeRemainder(args, target);
- // Validate the outputs.
- boolean valid = true;
- if (!args.out.couldBe(Float16Utils.convertFloat16ToDouble(arrayOut[i * 2 + j]))) {
- valid = false;
- }
- if (!valid) {
- if (!errorFound) {
- errorFound = true;
- message.append("Input inNumerator: ");
- appendVariableToMessage(message, args.inNumerator);
- message.append("\n");
- message.append("Input inDenominator: ");
- appendVariableToMessage(message, args.inDenominator);
- message.append("\n");
- message.append("Expected output out: ");
- appendVariableToMessage(message, args.out);
- message.append("\n");
- message.append("Actual output out: ");
- appendVariableToMessage(message, arrayOut[i * 2 + j]);
- message.append("\n");
- message.append("Actual output out (in double): ");
- appendVariableToMessage(message, Float16Utils.convertFloat16ToDouble(arrayOut[i * 2 + j]));
- if (!args.out.couldBe(Float16Utils.convertFloat16ToDouble(arrayOut[i * 2 + j]))) {
- message.append(" FAIL");
- }
- message.append("\n");
- message.append("Errors at");
- }
- message.append(" [");
- message.append(Integer.toString(i));
- message.append(", ");
- message.append(Integer.toString(j));
- message.append("]");
- }
- }
- }
- assertFalse("Incorrect output for checkRemainderHalf2Half2Half2" +
- (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
- }
- private void checkRemainderHalf3Half3Half3() {
- Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_16, 3, 0x86a0786dl, false);
- Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_16, 3, 0xc450747el, false);
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_16, 3), INPUTSIZE);
- script.set_gAllocInDenominator(inDenominator);
- script.forEach_testRemainderHalf3Half3Half3(inNumerator, out);
- verifyResultsRemainderHalf3Half3Half3(inNumerator, inDenominator, out, false);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderHalf3Half3Half3: " + e.toString());
- }
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_16, 3), INPUTSIZE);
- scriptRelaxed.set_gAllocInDenominator(inDenominator);
- scriptRelaxed.forEach_testRemainderHalf3Half3Half3(inNumerator, out);
- verifyResultsRemainderHalf3Half3Half3(inNumerator, inDenominator, out, true);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderHalf3Half3Half3: " + e.toString());
- }
- }
- private void verifyResultsRemainderHalf3Half3Half3(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
- short[] arrayInNumerator = new short[INPUTSIZE * 4];
- Arrays.fill(arrayInNumerator, (short) 42);
- inNumerator.copyTo(arrayInNumerator);
- short[] arrayInDenominator = new short[INPUTSIZE * 4];
- Arrays.fill(arrayInDenominator, (short) 42);
- inDenominator.copyTo(arrayInDenominator);
- short[] arrayOut = new short[INPUTSIZE * 4];
- Arrays.fill(arrayOut, (short) 42);
- out.copyTo(arrayOut);
- StringBuilder message = new StringBuilder();
- boolean errorFound = false;
- for (int i = 0; i < INPUTSIZE; i++) {
- for (int j = 0; j < 3 ; j++) {
- // Extract the inputs.
- ArgumentsHalfHalfHalf args = new ArgumentsHalfHalfHalf();
- args.inNumerator = arrayInNumerator[i * 4 + j];
- args.inNumeratorDouble = Float16Utils.convertFloat16ToDouble(args.inNumerator);
- args.inDenominator = arrayInDenominator[i * 4 + j];
- args.inDenominatorDouble = Float16Utils.convertFloat16ToDouble(args.inDenominator);
- // Figure out what the outputs should have been.
- Target target = new Target(Target.FunctionType.NORMAL, Target.ReturnType.HALF, relaxed);
- CoreMathVerifier.computeRemainder(args, target);
- // Validate the outputs.
- boolean valid = true;
- if (!args.out.couldBe(Float16Utils.convertFloat16ToDouble(arrayOut[i * 4 + j]))) {
- valid = false;
- }
- if (!valid) {
- if (!errorFound) {
- errorFound = true;
- message.append("Input inNumerator: ");
- appendVariableToMessage(message, args.inNumerator);
- message.append("\n");
- message.append("Input inDenominator: ");
- appendVariableToMessage(message, args.inDenominator);
- message.append("\n");
- message.append("Expected output out: ");
- appendVariableToMessage(message, args.out);
- message.append("\n");
- message.append("Actual output out: ");
- appendVariableToMessage(message, arrayOut[i * 4 + j]);
- message.append("\n");
- message.append("Actual output out (in double): ");
- appendVariableToMessage(message, Float16Utils.convertFloat16ToDouble(arrayOut[i * 4 + j]));
- if (!args.out.couldBe(Float16Utils.convertFloat16ToDouble(arrayOut[i * 4 + j]))) {
- message.append(" FAIL");
- }
- message.append("\n");
- message.append("Errors at");
- }
- message.append(" [");
- message.append(Integer.toString(i));
- message.append(", ");
- message.append(Integer.toString(j));
- message.append("]");
- }
- }
- }
- assertFalse("Incorrect output for checkRemainderHalf3Half3Half3" +
- (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
- }
- private void checkRemainderHalf4Half4Half4() {
- Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_16, 4, 0xd212a8dcl, false);
- Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_16, 4, 0xb0104635l, false);
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_16, 4), INPUTSIZE);
- script.set_gAllocInDenominator(inDenominator);
- script.forEach_testRemainderHalf4Half4Half4(inNumerator, out);
- verifyResultsRemainderHalf4Half4Half4(inNumerator, inDenominator, out, false);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderHalf4Half4Half4: " + e.toString());
- }
- try {
- Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_16, 4), INPUTSIZE);
- scriptRelaxed.set_gAllocInDenominator(inDenominator);
- scriptRelaxed.forEach_testRemainderHalf4Half4Half4(inNumerator, out);
- verifyResultsRemainderHalf4Half4Half4(inNumerator, inDenominator, out, true);
- } catch (Exception e) {
- throw new RSRuntimeException("RenderScript. Can't invoke forEach_testRemainderHalf4Half4Half4: " + e.toString());
- }
- }
- private void verifyResultsRemainderHalf4Half4Half4(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
- short[] arrayInNumerator = new short[INPUTSIZE * 4];
- Arrays.fill(arrayInNumerator, (short) 42);
- inNumerator.copyTo(arrayInNumerator);
- short[] arrayInDenominator = new short[INPUTSIZE * 4];
- Arrays.fill(arrayInDenominator, (short) 42);
- inDenominator.copyTo(arrayInDenominator);
- short[] arrayOut = new short[INPUTSIZE * 4];
- Arrays.fill(arrayOut, (short) 42);
- out.copyTo(arrayOut);
- StringBuilder message = new StringBuilder();
- boolean errorFound = false;
- for (int i = 0; i < INPUTSIZE; i++) {
- for (int j = 0; j < 4 ; j++) {
- // Extract the inputs.
- ArgumentsHalfHalfHalf args = new ArgumentsHalfHalfHalf();
- args.inNumerator = arrayInNumerator[i * 4 + j];
- args.inNumeratorDouble = Float16Utils.convertFloat16ToDouble(args.inNumerator);
- args.inDenominator = arrayInDenominator[i * 4 + j];
- args.inDenominatorDouble = Float16Utils.convertFloat16ToDouble(args.inDenominator);
- // Figure out what the outputs should have been.
- Target target = new Target(Target.FunctionType.NORMAL, Target.ReturnType.HALF, relaxed);
- CoreMathVerifier.computeRemainder(args, target);
- // Validate the outputs.
- boolean valid = true;
- if (!args.out.couldBe(Float16Utils.convertFloat16ToDouble(arrayOut[i * 4 + j]))) {
- valid = false;
- }
- if (!valid) {
- if (!errorFound) {
- errorFound = true;
- message.append("Input inNumerator: ");
- appendVariableToMessage(message, args.inNumerator);
- message.append("\n");
- message.append("Input inDenominator: ");
- appendVariableToMessage(message, args.inDenominator);
- message.append("\n");
- message.append("Expected output out: ");
- appendVariableToMessage(message, args.out);
- message.append("\n");
- message.append("Actual output out: ");
- appendVariableToMessage(message, arrayOut[i * 4 + j]);
- message.append("\n");
- message.append("Actual output out (in double): ");
- appendVariableToMessage(message, Float16Utils.convertFloat16ToDouble(arrayOut[i * 4 + j]));
- if (!args.out.couldBe(Float16Utils.convertFloat16ToDouble(arrayOut[i * 4 + j]))) {
- message.append(" FAIL");
- }
- message.append("\n");
- message.append("Errors at");
- }
- message.append(" [");
- message.append(Integer.toString(i));
- message.append(", ");
- message.append(Integer.toString(j));
- message.append("]");
- }
- }
- }
- assertFalse("Incorrect output for checkRemainderHalf4Half4Half4" +
- (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
- }
- public void testRemainder() {
- checkRemainderFloatFloatFloat();
- checkRemainderFloat2Float2Float2();
- checkRemainderFloat3Float3Float3();
- checkRemainderFloat4Float4Float4();
- checkRemainderHalfHalfHalf();
- checkRemainderHalf2Half2Half2();
- checkRemainderHalf3Half3Half3();
- checkRemainderHalf4Half4Half4();
- }
- }