# Figure 1: C++ Hybrid K1 vs K2 vs ... vs Kn

import matplotlib.pyplot as plt
y = [250, 500, 750, 1000, 1250, 1500, 1750, 2000, 2250, 2500, 2750, 3000, 3250, 3500, 3750, 4000, 4250, 4500, 4750, 5000, 5250, 5500, 5750, 6000, 6250, 6500, 6750, 7000, 7250, 7500, 7750, 8000, 8250, 8500, 8750, 9000, 9250, 9500, 9750, 10000]
p1, = plt.plot(y, [0.000015, 0.000035, 0.000053, 0.000077, 0.000103, 0.000119, 0.000134, 0.000168, 0.000209, 0.000224, 0.000241, 0.000258, 0.000262, 0.000275, 0.000293, 0.000346, 0.000407, 0.000431, 0.000444, 0.000462, 0.000481, 0.000499, 0.000519, 0.000537, 0.000556, 0.000576, 0.000595, 0.000616, 0.000653, 0.000658, 0.000689, 0.000765, 0.000853, 0.000891, 0.000914, 0.000942, 0.000962, 0.000971, 0.000995, 0.001013], label='C++ Hybrid K=16', marker='.', linestyle='-')
p2, = plt.plot(y, [0.000011, 0.000025, 0.000042, 0.000057, 0.000079, 0.000094, 0.000108, 0.000127, 0.000160, 0.000176, 0.000192, 0.000209, 0.000224, 0.000240, 0.000256, 0.000282, 0.000343, 0.000358, 0.000376, 0.000396, 0.000416, 0.000437, 0.000458, 0.000475, 0.000483, 0.000493, 0.000512, 0.000531, 0.000553, 0.000572, 0.000588, 0.000635, 0.000729, 0.000752, 0.000765, 0.000781, 0.000803, 0.000829, 0.000850, 0.000889], label='C++ Hybrid K=32', marker='D', linestyle='-')
p3, = plt.plot(y, [0.000010, 0.000022, 0.000038, 0.000052, 0.000071, 0.000086, 0.000101, 0.000117, 0.000144, 0.000161, 0.000177, 0.000193, 0.000209, 0.000226, 0.000243, 0.000261, 0.000306, 0.000320, 0.000345, 0.000361, 0.000376, 0.000394, 0.000411, 0.000432, 0.000451, 0.000469, 0.000490, 0.000509, 0.000527, 0.000546, 0.000565, 0.000586, 0.000661, 0.000684, 0.000699, 0.000717, 0.000741, 0.000765, 0.000779, 0.000795], label='C++ Hybrid K=64', marker='o', linestyle='-')
p4, = plt.plot(y, [0.000011, 0.000024, 0.000037, 0.000054, 0.000068, 0.000085, 0.000103, 0.000126, 0.000134, 0.000151, 0.000171, 0.000188, 0.000207, 0.000229, 0.000249, 0.000276, 0.000284, 0.000302, 0.000321, 0.000343, 0.000359, 0.000380, 0.000397, 0.000418, 0.000438, 0.000460, 0.000484, 0.000505, 0.000549, 0.000562, 0.000584, 0.000604, 0.000620, 0.000642, 0.000661, 0.000683, 0.000705, 0.000717, 0.000748, 0.000754], label='C++ Hybrid K=128', marker='x', linestyle='-')
p5, = plt.plot(y, [0.000015, 0.000033, 0.000047, 0.000073, 0.000080, 0.000104, 0.000132, 0.000162, 0.000156, 0.000180, 0.000205, 0.000233, 0.000258, 0.000287, 0.000317, 0.000349, 0.000321, 0.000345, 0.000356, 0.000379, 0.000405, 0.000431, 0.000457, 0.000486, 0.000514, 0.000543, 0.000574, 0.000604, 0.000635, 0.000665, 0.000699, 0.000738, 0.000657, 0.000683, 0.000709, 0.000732, 0.000745, 0.000770, 0.000795, 0.000822], label='C++ Hybrid K=256', marker='*', linestyle='-')
p6, = plt.plot(y, [0.000015, 0.000054, 0.000064, 0.000114, 0.000106, 0.000143, 0.000187, 0.000249, 0.000202, 0.000230, 0.000271, 0.000313, 0.000355, 0.000399, 0.000419, 0.000509, 0.000398, 0.000425, 0.000478, 0.000495, 0.000525, 0.000565, 0.000602, 0.000651, 0.000717, 0.000765, 0.000827, 0.000886, 0.000949, 0.000993, 0.001045, 0.001098, 0.000835, 0.000862, 0.000872, 0.000912, 0.000945, 0.000985, 0.001024, 0.001067], label='C++ Hybrid K=512', marker='p', linestyle='-')
plt.legend(handles=[p1, p2, p3, p4, p5, p6], fontsize='20')

plt.ylabel('Average Delay over 10,000 Runs (sec.)', fontsize='20', fontweight='bold')
plt.xlabel('Vector Length (double precision IEEE 754 elements)', fontsize='20', fontweight='bold')
plt.show()
59f26fc0e0d5a86051f44f1e253df89f77e730f7
<mask token>

<mask token>
plt.legend(handles=[p1, p2, p3, p4, p5, p6], fontsize='20')
plt.ylabel('Average Delay over 10,000 Runs (sec.)', fontsize='20',
    fontweight='bold')
plt.xlabel('Vector Length (double precision IEEE 754 elements)', fontsize=
    '20', fontweight='bold')
plt.show()

<mask token>
y = [250, 500, 750, 1000, 1250, 1500, 1750, 2000, 2250, 2500, 2750, 3000, 
    3250, 3500, 3750, 4000, 4250, 4500, 4750, 5000, 5250, 5500, 5750, 6000,
    6250, 6500, 6750, 7000, 7250, 7500, 7750, 8000, 8250, 8500, 8750, 9000,
    9250, 9500, 9750, 10000]
p1, = plt.plot(y, [1.5e-05, 3.5e-05, 5.3e-05, 7.7e-05, 0.000103, 0.000119, 
    0.000134, 0.000168, 0.000209, 0.000224, 0.000241, 0.000258, 0.000262, 
    0.000275, 0.000293, 0.000346, 0.000407, 0.000431, 0.000444, 0.000462, 
    0.000481, 0.000499, 0.000519, 0.000537, 0.000556, 0.000576, 0.000595, 
    0.000616, 0.000653, 0.000658, 0.000689, 0.000765, 0.000853, 0.000891, 
    0.000914, 0.000942, 0.000962, 0.000971, 0.000995, 0.001013], label=
    'C++ Hybrid K=16', marker='.', linestyle='-')
p2, = plt.plot(y, [1.1e-05, 2.5e-05, 4.2e-05, 5.7e-05, 7.9e-05, 9.4e-05, 
    0.000108, 0.000127, 0.00016, 0.000176, 0.000192, 0.000209, 0.000224, 
    0.00024, 0.000256, 0.000282, 0.000343, 0.000358, 0.000376, 0.000396, 
    0.000416, 0.000437, 0.000458, 0.000475, 0.000483, 0.000493, 0.000512, 
    0.000531, 0.000553, 0.000572, 0.000588, 0.000635, 0.000729, 0.000752, 
    0.000765, 0.000781, 0.000803, 0.000829, 0.00085, 0.000889], label=
    'C++ Hybrid K=32', marker='D', linestyle='-')
p3, = plt.plot(y, [1e-05, 2.2e-05, 3.8e-05, 5.2e-05, 7.1e-05, 8.6e-05, 
    0.000101, 0.000117, 0.000144, 0.000161, 0.000177, 0.000193, 0.000209, 
    0.000226, 0.000243, 0.000261, 0.000306, 0.00032, 0.000345, 0.000361, 
    0.000376, 0.000394, 0.000411, 0.000432, 0.000451, 0.000469, 0.00049, 
    0.000509, 0.000527, 0.000546, 0.000565, 0.000586, 0.000661, 0.000684, 
    0.000699, 0.000717, 0.000741, 0.000765, 0.000779, 0.000795], label=
    'C++ Hybrid K=64', marker='o', linestyle='-')
p4, = plt.plot(y, [1.1e-05, 2.4e-05, 3.7e-05, 5.4e-05, 6.8e-05, 8.5e-05, 
    0.000103, 0.000126, 0.000134, 0.000151, 0.000171, 0.000188, 0.000207, 
    0.000229, 0.000249, 0.000276, 0.000284, 0.000302, 0.000321, 0.000343, 
    0.000359, 0.00038, 0.000397, 0.000418, 0.000438, 0.00046, 0.000484, 
    0.000505, 0.000549, 0.000562, 0.000584, 0.000604, 0.00062, 0.000642, 
    0.000661, 0.000683, 0.000705, 0.000717, 0.000748, 0.000754], label=
    'C++ Hybrid K=128', marker='x', linestyle='-')
p5, = plt.plot(y, [1.5e-05, 3.3e-05, 4.7e-05, 7.3e-05, 8e-05, 0.000104, 
    0.000132, 0.000162, 0.000156, 0.00018, 0.000205, 0.000233, 0.000258, 
    0.000287, 0.000317, 0.000349, 0.000321, 0.000345, 0.000356, 0.000379, 
    0.000405, 0.000431, 0.000457, 0.000486, 0.000514, 0.000543, 0.000574, 
    0.000604, 0.000635, 0.000665, 0.000699, 0.000738, 0.000657, 0.000683, 
    0.000709, 0.000732, 0.000745, 0.00077, 0.000795, 0.000822], label=
    'C++ Hybrid K=256', marker='*', linestyle='-')
p6, = plt.plot(y, [1.5e-05, 5.4e-05, 6.4e-05, 0.000114, 0.000106, 0.000143,
    0.000187, 0.000249, 0.000202, 0.00023, 0.000271, 0.000313, 0.000355, 
    0.000399, 0.000419, 0.000509, 0.000398, 0.000425, 0.000478, 0.000495, 
    0.000525, 0.000565, 0.000602, 0.000651, 0.000717, 0.000765, 0.000827, 
    0.000886, 0.000949, 0.000993, 0.001045, 0.001098, 0.000835, 0.000862, 
    0.000872, 0.000912, 0.000945, 0.000985, 0.001024, 0.001067], label=
    'C++ Hybrid K=512', marker='p', linestyle='-')
plt.legend(handles=[p1, p2, p3, p4, p5, p6], fontsize='20')
plt.ylabel('Average Delay over 10,000 Runs (sec.)', fontsize='20',
    fontweight='bold')
plt.xlabel('Vector Length (double precision IEEE 754 elements)', fontsize=
    '20', fontweight='bold')
plt.show()

import matplotlib.pyplot as plt
y = [250, 500, 750, 1000, 1250, 1500, 1750, 2000, 2250, 2500, 2750, 3000, 
    3250, 3500, 3750, 4000, 4250, 4500, 4750, 5000, 5250, 5500, 5750, 6000,
    6250, 6500, 6750, 7000, 7250, 7500, 7750, 8000, 8250, 8500, 8750, 9000,
    9250, 9500, 9750, 10000]
p1, = plt.plot(y, [1.5e-05, 3.5e-05, 5.3e-05, 7.7e-05, 0.000103, 0.000119, 
    0.000134, 0.000168, 0.000209, 0.000224, 0.000241, 0.000258, 0.000262, 
    0.000275, 0.000293, 0.000346, 0.000407, 0.000431, 0.000444, 0.000462, 
    0.000481, 0.000499, 0.000519, 0.000537, 0.000556, 0.000576, 0.000595, 
    0.000616, 0.000653, 0.000658, 0.000689, 0.000765, 0.000853, 0.000891, 
    0.000914, 0.000942, 0.000962, 0.000971, 0.000995, 0.001013], label=
    'C++ Hybrid K=16', marker='.', linestyle='-')
p2, = plt.plot(y, [1.1e-05, 2.5e-05, 4.2e-05, 5.7e-05, 7.9e-05, 9.4e-05, 
    0.000108, 0.000127, 0.00016, 0.000176, 0.000192, 0.000209, 0.000224, 
    0.00024, 0.000256, 0.000282, 0.000343, 0.000358, 0.000376, 0.000396, 
    0.000416, 0.000437, 0.000458, 0.000475, 0.000483, 0.000493, 0.000512, 
    0.000531, 0.000553, 0.000572, 0.000588, 0.000635, 0.000729, 0.000752, 
    0.000765, 0.000781, 0.000803, 0.000829, 0.00085, 0.000889], label=
    'C++ Hybrid K=32', marker='D', linestyle='-')
p3, = plt.plot(y, [1e-05, 2.2e-05, 3.8e-05, 5.2e-05, 7.1e-05, 8.6e-05, 
    0.000101, 0.000117, 0.000144, 0.000161, 0.000177, 0.000193, 0.000209, 
    0.000226, 0.000243, 0.000261, 0.000306, 0.00032, 0.000345, 0.000361, 
    0.000376, 0.000394, 0.000411, 0.000432, 0.000451, 0.000469, 0.00049, 
    0.000509, 0.000527, 0.000546, 0.000565, 0.000586, 0.000661, 0.000684, 
    0.000699, 0.000717, 0.000741, 0.000765, 0.000779, 0.000795], label=
    'C++ Hybrid K=64', marker='o', linestyle='-')
p4, = plt.plot(y, [1.1e-05, 2.4e-05, 3.7e-05, 5.4e-05, 6.8e-05, 8.5e-05, 
    0.000103, 0.000126, 0.000134, 0.000151, 0.000171, 0.000188, 0.000207, 
    0.000229, 0.000249, 0.000276, 0.000284, 0.000302, 0.000321, 0.000343, 
    0.000359, 0.00038, 0.000397, 0.000418, 0.000438, 0.00046, 0.000484, 
    0.000505, 0.000549, 0.000562, 0.000584, 0.000604, 0.00062, 0.000642, 
    0.000661, 0.000683, 0.000705, 0.000717, 0.000748, 0.000754], label=
    'C++ Hybrid K=128', marker='x', linestyle='-')
p5, = plt.plot(y, [1.5e-05, 3.3e-05, 4.7e-05, 7.3e-05, 8e-05, 0.000104, 
    0.000132, 0.000162, 0.000156, 0.00018, 0.000205, 0.000233, 0.000258, 
    0.000287, 0.000317, 0.000349, 0.000321, 0.000345, 0.000356, 0.000379, 
    0.000405, 0.000431, 0.000457, 0.000486, 0.000514, 0.000543, 0.000574, 
    0.000604, 0.000635, 0.000665, 0.000699, 0.000738, 0.000657, 0.000683, 
    0.000709, 0.000732, 0.000745, 0.00077, 0.000795, 0.000822], label=
    'C++ Hybrid K=256', marker='*', linestyle='-')
p6, = plt.plot(y, [1.5e-05, 5.4e-05, 6.4e-05, 0.000114, 0.000106, 0.000143,
    0.000187, 0.000249, 0.000202, 0.00023, 0.000271, 0.000313, 0.000355, 
    0.000399, 0.000419, 0.000509, 0.000398, 0.000425, 0.000478, 0.000495, 
    0.000525, 0.000565, 0.000602, 0.000651, 0.000717, 0.000765, 0.000827, 
    0.000886, 0.000949, 0.000993, 0.001045, 0.001098, 0.000835, 0.000862, 
    0.000872, 0.000912, 0.000945, 0.000985, 0.001024, 0.001067], label=
    'C++ Hybrid K=512', marker='p', linestyle='-')
plt.legend(handles=[p1, p2, p3, p4, p5, p6], fontsize='20')
plt.ylabel('Average Delay over 10,000 Runs (sec.)', fontsize='20',
    fontweight='bold')
plt.xlabel('Vector Length (double precision IEEE 754 elements)', fontsize=
    '20', fontweight='bold')
plt.show()

# Figure 1: C++ Hybrid K1 vs K2 vs ... vs Kn

import matplotlib.pyplot as plt
y = [250, 500, 750, 1000, 1250, 1500, 1750, 2000, 2250, 2500, 2750, 3000, 3250, 3500, 3750, 4000, 4250, 4500, 4750, 5000, 5250, 5500, 5750, 6000, 6250, 6500, 6750, 7000, 7250, 7500, 7750, 8000, 8250, 8500, 8750, 9000, 9250, 9500, 9750, 10000]
p1, = plt.plot(y, [0.000015, 0.000035, 0.000053, 0.000077, 0.000103, 0.000119, 0.000134, 0.000168, 0.000209, 0.000224, 0.000241, 0.000258, 0.000262, 0.000275, 0.000293, 0.000346, 0.000407, 0.000431, 0.000444, 0.000462, 0.000481, 0.000499, 0.000519, 0.000537, 0.000556, 0.000576, 0.000595, 0.000616, 0.000653, 0.000658, 0.000689, 0.000765, 0.000853, 0.000891, 0.000914, 0.000942, 0.000962, 0.000971, 0.000995, 0.001013], label='C++ Hybrid K=16', marker='.', linestyle='-')
p2, = plt.plot(y, [0.000011, 0.000025, 0.000042, 0.000057, 0.000079, 0.000094, 0.000108, 0.000127, 0.000160, 0.000176, 0.000192, 0.000209, 0.000224, 0.000240, 0.000256, 0.000282, 0.000343, 0.000358, 0.000376, 0.000396, 0.000416, 0.000437, 0.000458, 0.000475, 0.000483, 0.000493, 0.000512, 0.000531, 0.000553, 0.000572, 0.000588, 0.000635, 0.000729, 0.000752, 0.000765, 0.000781, 0.000803, 0.000829, 0.000850, 0.000889], label='C++ Hybrid K=32', marker='D', linestyle='-')
p3, = plt.plot(y, [0.000010, 0.000022, 0.000038, 0.000052, 0.000071, 0.000086, 0.000101, 0.000117, 0.000144, 0.000161, 0.000177, 0.000193, 0.000209, 0.000226, 0.000243, 0.000261, 0.000306, 0.000320, 0.000345, 0.000361, 0.000376, 0.000394, 0.000411, 0.000432, 0.000451, 0.000469, 0.000490, 0.000509, 0.000527, 0.000546, 0.000565, 0.000586, 0.000661, 0.000684, 0.000699, 0.000717, 0.000741, 0.000765, 0.000779, 0.000795], label='C++ Hybrid K=64', marker='o', linestyle='-')
p4, = plt.plot(y, [0.000011, 0.000024, 0.000037, 0.000054, 0.000068, 0.000085, 0.000103, 0.000126, 0.000134, 0.000151, 0.000171, 0.000188, 0.000207, 0.000229, 0.000249, 0.000276, 0.000284, 0.000302, 0.000321, 0.000343, 0.000359, 0.000380, 0.000397, 0.000418, 0.000438, 0.000460, 0.000484, 0.000505, 0.000549, 0.000562, 0.000584, 0.000604, 0.000620, 0.000642, 0.000661, 0.000683, 0.000705, 0.000717, 0.000748, 0.000754], label='C++ Hybrid K=128', marker='x', linestyle='-')
p5, = plt.plot(y, [0.000015, 0.000033, 0.000047, 0.000073, 0.000080, 0.000104, 0.000132, 0.000162, 0.000156, 0.000180, 0.000205, 0.000233, 0.000258, 0.000287, 0.000317, 0.000349, 0.000321, 0.000345, 0.000356, 0.000379, 0.000405, 0.000431, 0.000457, 0.000486, 0.000514, 0.000543, 0.000574, 0.000604, 0.000635, 0.000665, 0.000699, 0.000738, 0.000657, 0.000683, 0.000709, 0.000732, 0.000745, 0.000770, 0.000795, 0.000822], label='C++ Hybrid K=256', marker='*', linestyle='-')
p6, = plt.plot(y, [0.000015, 0.000054, 0.000064, 0.000114, 0.000106, 0.000143, 0.000187, 0.000249, 0.000202, 0.000230, 0.000271, 0.000313, 0.000355, 0.000399, 0.000419, 0.000509, 0.000398, 0.000425, 0.000478, 0.000495, 0.000525, 0.000565, 0.000602, 0.000651, 0.000717, 0.000765, 0.000827, 0.000886, 0.000949, 0.000993, 0.001045, 0.001098, 0.000835, 0.000862, 0.000872, 0.000912, 0.000945, 0.000985, 0.001024, 0.001067], label='C++ Hybrid K=512', marker='p', linestyle='-')
plt.legend(handles=[p1, p2, p3, p4, p5, p6], fontsize='20')

plt.ylabel('Average Delay over 10,000 Runs (sec.)', fontsize='20', fontweight='bold')
plt.xlabel('Vector Length (double precision IEEE 754 elements)', fontsize='20', fontweight='bold')
plt.show()