CSharp · Console
using System;
using System.Numerics;
using System.Threading.Tasks;
public class Program
{
public static void Main()
{
float[] array1 = new float[] { 1.1F, 2.0F, 3.0F, 4.0F, 5.0F };
float[] array2 = new float[] { 6.1F, 7.0F, 8.0F };
float[,] final_array = new float[array1.Length, array2.Length];
int vectorCount = array2.Length / 4;
Vector4[] array2Vectors = new Vector4[vectorCount];
Parallel.For(0, vectorCount, i =>
{
int offset = i * 4;
array2Vectors[i] = new Vector4(array2[offset], array2[offset + 1], array2[offset + 2], array2[offset + 3]);
});
Parallel.For(0, array1.Length, i =>
{
Vector4 v1 = new Vector4(array1[i], array1[i], array1[i], array1[i]);
for (int j = 0; j < array2Vectors.Length; j++)
{
Vector4 result = Vector4.Abs(Vector4.Subtract(v1, array2Vectors[j]));
int offset = j * 4;
final_array[i, offset] = result.X;
final_array[i, offset + 1] = result.Y;
final_array[i, offset + 2] = result.Z;
final_array[i, offset + 3] = result.W;
}
for (int j = vectorCount * 4; j < array2.Length; j++)
{
final_array[i,j] = Math.Abs(array1[i] - array2[j]);
}
});
for (int i = 0; i < array1.Length; i++)
{
for (int j = 0; j < array2.Length; j++)
{
Console.WriteLine(final_array[i,j]);
}
}
}
}