/* compile with -fopenmp */
#include <stdio.h>
long fib(int n) {
long x, y;
if (n<=1)
return n;
else {
#pragma omp task shared(x)
x=fib(n-1);
y=fib(n-2);
#pragma omp taskwait
return x+y;
}
}
int main(char **argv, int argc) {
long f;
#pragma omp parallel
{
f = fib(30);
}
printf("fib(30)=%ld\n", f);
}