1  double f1 (int, long, float);
       2  double f2 (int, long, float);
       3  double f3 (int, long, float);
       4  double f4 (int, long, float);
       5  double f5 (int, long, float);
       6  
       7  #pragma omp declare variant (f1) match (user={condition(1)})
       8  #pragma omp declare variant (f2) match (user={condition(score(1):1)})
       9  #pragma omp declare variant (f3) match (user={condition(score(3):1)})
      10  #pragma omp declare variant (f4) match (user={condition(score(2):1)})
      11  #pragma omp declare variant (f5) match (implementation={vendor(gnu)})
      12  double
      13  f6 (int x, long y, float z)
      14  {
      15    return z + x + y;
      16  }
      17  
      18  double
      19  test (int x)
      20  {
      21    return f6 (x, x, 3.5f);
      22  }