#include <stdio.h>

#include "utils/palloc.h"

#include "math.h"

double sqrt();

typedef struct point {
  double x, y;
} point;


double *fpdist(p1, p2)

point	*p1, *p2;
{
	double dx= (p1->x - p2->x);
	double dy= (p1->y - p2->y);
	double *r= (double*) palloc(sizeof(double));

	dx= dx*dx;
	dy= dy*dy;
	*r= sqrt(dx+dy);
	return r;
}


double Pi;

double deg2rad(x)

double	x;
{
  static int first= 1;
  if (first) {
	first= 0;
	Pi= 4*atan(1.0);
  }
  return ((x) / 180.0 * Pi);
}

double *kmdist(p1, p2)

point	*p1, *p2;
{
	double *r= (double*) palloc(sizeof(double));
	double cosg= cos(deg2rad(p1->y)) * cos(deg2rad(p2->y))
	* cos(deg2rad(fabs(p1->x - p2->x)))
	+ sin(deg2rad(p1->y)) * sin(deg2rad(p2->y));

	*r= acos(cosg) / (2 * Pi) * 40075.1; /* 21638.823; // Nautical Miles ? */
	return r;
}


double *dummy_sel()
{
	double *r= (double*) palloc(sizeof(double));

	*r= 0.5;
	return r;
}

