#include <stdio.h>
#include <omp.h>
#define N 1000000
int dotProduct(int *a, int *b, int n) {
int dot = 0;
#pragma omp parallel for reduction(+:dot)
for (int i = 0; i < n; i++) {
dot += a[i] * b[i];
}
return dot;
}
int main() {
int a[N], b[N];
// Initialize arrays a and b
for (int i = 0; i < N; i++) {
a[i] = i;
b[i] = 2 * i;
}
// Compute dot product
int result = dotProduct(a, b, N);
// Display the result
printf("Dot product: %d\n", result
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxvbXAuaD4KCiNkZWZpbmUgTiAxMDAwMDAwCgppbnQgZG90UHJvZHVjdChpbnQgKmEsIGludCAqYiwgaW50IG4pIHsKICAgIGludCBkb3QgPSAwOwogICAgI3ByYWdtYSBvbXAgcGFyYWxsZWwgZm9yIHJlZHVjdGlvbigrOmRvdCkKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgZG90ICs9IGFbaV0gKiBiW2ldOwogICAgfQogICAgcmV0dXJuIGRvdDsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgYVtOXSwgYltOXTsKCiAgICAvLyBJbml0aWFsaXplIGFycmF5cyBhIGFuZCBiCiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgICAgIGFbaV0gPSBpOwogICAgICAgIGJbaV0gPSAyICogaTsKICAgIH0KCiAgICAvLyBDb21wdXRlIGRvdCBwcm9kdWN0CiAgICBpbnQgcmVzdWx0ID0gZG90UHJvZHVjdChhLCBiLCBOKTsKCiAgICAvLyBEaXNwbGF5IHRoZSByZXN1bHQKICAgIHByaW50ZigiRG90IHByb2R1Y3Q6ICVkXG4iLCByZXN1bHQpOwoKICAgIHJldHVybiAwOwp9Cg==