.NET Fiddle

CSharp · Console

/Program.cs

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]);
			}
		}
	}
}
;