#include <stdio.h>
#include <stdlib.h>

int (*function)(int);

int f1( int in )
{
  printf( "F1\n" );
  return in+1;
}

int f2( int in )
{
  printf( "F2\n" );
  return in-1;
}

int f3( int in )
{
  float recip = 1.0 / (float)in;
  
  printf( "F3\n" );
  return (int)(recip*65536.0);
}

int f4( int in )
{
  printf( "F4\n" );
  return in<<1;
}

int (*functions[4])(int) = { f1, f2, f3, f4 };

int main()
{
  int loop;
  
  function = f1;
  printf( "%d\n", function( 10 ) );
  
  function = f2;
  printf( "%d\n", function( 10 ) );
  
  function = f3;
  printf( "%d\n", function( 10 ) );
  
  function = f4;
  printf( "%d\n", function( 10 ) );
  
  printf( "And now...\n" );
  for( loop = 0; loop < 4; loop++ )
  {
    printf( "%d\n", functions[loop](10) );
  }
  
  return 0;
}
