///////////////////////////////////////////////////////////////////////////
//
// PURPOSE: Test the shell routine.
// AUTHORS: 1. Rob McEwen, 8 Nov 13
//          2.
//
///////////////////////////////////////////////////////////////////////////
//
#include"MathP.h"
#include <stdio.h>
//
// Roots at +/- 2.0
double func1(double x)
{
   return (x*x - 4.0);
}
//
// From Matlab: 
// fzero('sin(x) - x/2',2)
// ans = 1.8955
double func2(double x)
{
   return( sin(x) - x/2.0);
}

void main()
{
   long numbers[] = {7, 5, 3, 2, 1, 0, 4, 6, 8, 9};

   const int len = sizeof(numbers)/sizeof(long);

   long *pnumbers[len];

   for(int i=0; i<len; i++) pnumbers[i] = &numbers[i];

   for(i=0; i<len; i++) 
   {
      printf("%ld  %0x -> %ld\n", numbers[i], pnumbers[i], *pnumbers[i]);
   }

   printf("\n\n");

   Math::shellSort( pnumbers, len );

   for(i=0; i<len; i++) 
   {
      printf("%ld  %0x -> %ld\n", numbers[i], pnumbers[i], *pnumbers[i]);
   }

   printf("\n\n");

   Math::shellSort( numbers, len );

   for(i=0; i<len; i++) 
   {
      printf("%ld  %0x -> %ld\n", numbers[i], pnumbers[i], *pnumbers[i]);
   }

   printf("\n\n");

   Math::shellSort( pnumbers, len );

   for(i=0; i<len; i++) 
   {
      printf("%ld  %0x -> %ld\n", numbers[i], pnumbers[i], *pnumbers[i]);
   }
}
