import jdk.incubator.vector.Float16;

public class Test {
    public static void main(String[] args) {
        float x = Float.POSITIVE_INFINITY;
        float y = Float.NaN;
        var gold = test(x, y);
	System.out.println(gold);
	for (int i = 0; i < 100_000; i++) {
            Float16 val = test(x, y);
            if (!gold.equals(val)) {
	        throw new RuntimeException("bad value: " + val + " vs " + gold);
            }
	}
    }

    public static Float16 test(float x, float y) {
        var v0 = Float16.valueOf(1);
        var v2 = Float.NEGATIVE_INFINITY % x;
        var v1 = Float16.valueOf(v2 * y);
        var val = Float16.copySign(v0, v1);
        return val;
    }
}
