private void verifyResultsNativeAcospiFloatFloat( Allocation inV, Allocation out, boolean relaxed) { float[] arrayInV = new float[INPUTSIZE * 1]; Arrays.fill(arrayInV, (float) 42); inV.copyTo(arrayInV); 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. ArgumentsFloatFloat args = new ArgumentsFloatFloat(); args.inV = arrayInV[i]; // Figure out what the outputs should have been. Target target = new Target(relaxed); CoreMathVerifier.computeNativeAcospi(args, target); // Validate the outputs. boolean valid = true; if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) { valid = false; } if (!valid) { if (!errorFound) { errorFound = true; message.append("Input inV: "); appendVariableToMessage(message, args.inV); 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], 0.0005)) { 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 checkNativeAcospiFloatFloat" + (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound); }
private void verifyResultsExpm1FloatFloat(Allocation in, Allocation out, boolean relaxed) { float[] arrayIn = new float[INPUTSIZE * 1]; in.copyTo(arrayIn); float[] arrayOut = new float[INPUTSIZE * 1]; out.copyTo(arrayOut); for (int i = 0; i < INPUTSIZE; i++) { for (int j = 0; j < 1; j++) { // Extract the inputs. ArgumentsFloatFloat args = new ArgumentsFloatFloat(); args.in = arrayIn[i]; // Figure out what the outputs should have been. Target target = new Target(relaxed); CoreMathVerifier.computeExpm1(args, target); // Validate the outputs. boolean valid = true; if (!args.out.couldBe(arrayOut[i * 1 + j])) { valid = false; } if (!valid) { StringBuilder message = new StringBuilder(); message.append("Input in: "); message.append( String.format( "%14.8g {%8x} %15a", args.in, Float.floatToRawIntBits(args.in), args.in)); message.append("\n"); message.append("Expected output out: "); message.append(args.out.toString()); message.append("\n"); message.append("Actual output out: "); message.append( String.format( "%14.8g {%8x} %15a", arrayOut[i * 1 + j], Float.floatToRawIntBits(arrayOut[i * 1 + j]), arrayOut[i * 1 + j])); if (!args.out.couldBe(arrayOut[i * 1 + j])) { message.append(" FAIL"); } message.append("\n"); assertTrue( "Incorrect output for checkExpm1FloatFloat" + (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid); } } } }