public class Test2 {
    static final int ARRLEN = 1024;
    static final int ITERS  = 11000;
    static float  [] finp;
    static short  [] sout;

    public static void main(String args[]) {
        for (int i = 0; i < 100; i++) {
            kernel_test_float_float16();
        }
    }

    public static void test_float_float16(short[] sout, float[] finp) {
        for (int i = 0; i < finp.length; i++) {
            sout[i] = Float.floatToFloat16(finp[i]);
        }
    }

    public static void kernel_test_float_float16() {
        finp = new float[ARRLEN];
        sout = new short[ARRLEN];

        for (int i = 0; i < ARRLEN; i++) {
            finp[i] = (float) i * 1.4f;
        }

        for (int i = 0; i < ITERS; i++) {
            test_float_float16(sout, finp);
        }

        // Verifying the result
        for (int i = 0; i < ARRLEN; i++) {
            short s_i = Float.floatToFloat16(finp[i]);
            if (s_i != sout[i]) {
                throw new RuntimeException("wrong: i=" + i + " s_i=" + s_i + " sout_i=" + sout[i]);
            }
        }
    }
}
