import java.util.Arrays;
import jdk.incubator.vector.FloatVector;
import jdk.incubator.vector.VectorSpecies;

public class SommaVector {
    private static final VectorSpecies<Float> SPECIE = FloatVector.SPECIES_PREFERRED;

    public static float[] somma(float[] sinistra, float[] destra) {
        if (sinistra.length != destra.length) {
            throw new IllegalArgumentException("lunghezze diverse");
        }
        float[] risultato = new float[sinistra.length];
        int i = 0;
        int limite = SPECIE.loopBound(sinistra.length);
        for (; i < limite; i += SPECIE.length()) {
            FloatVector a = FloatVector.fromArray(SPECIE, sinistra, i);
            FloatVector b = FloatVector.fromArray(SPECIE, destra, i);
            a.add(b).intoArray(risultato, i);
        }
        for (; i < sinistra.length; i++) {
            risultato[i] = sinistra[i] + destra[i];
        }
        return risultato;
    }

    public static void main(String[] args) {
        float[] a = {1, 2, 3, 4, 5};
        float[] b = {10, 20, 30, 40, 50};
        System.out.println(Arrays.toString(somma(a, b)));
        System.out.println("corsie: " + SPECIE.length());
    }
}
