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);
 }
示例#2
0
 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);
       }
     }
   }
 }