gcs1.c

0000/*********************************************
0001
0002 Miscellaneous Functions
0003
0004********************************************/
0005
0006#include <math.h>
0007
0008double Jn(int i,double x)
0009{
0010 switch (i){
0011  case 0:
0012   return j0(x);
0013   break;
0014  case 1:
0015   return j1(x);
0016   break;
0017  default:
0018   return jn(i,x);
0019   break;
0020 }
0021}
0022
0023
0024double Yn(int i,double x)
0025{
0026 switch (i){
0027  case 0:
0028   return y0(x);
0029   break;
0030  case 1:
0031   return y1(x);
0032   break;
0033  default:
0034   return yn(i,x);
0035   break;
0036 }
0037}
0038
0039double refday(double mdy,double hms)
0040{
0041 double dmo,ddy,dyr,dhr,dmn,dsc,d;
0042        
0043 dmo=floor(mdy);
0044 dyr=100.*(mdy-dmo);
0045 if(dyr>40.){
0046  dmo=dmo+1;
0047  dyr=dyr-100.;
0048 }
0049 ddy=floor(dyr);  
0050 dyr=10000.*(dyr-ddy);
0051 if(dyr>8000.){
0052  ddy=ddy+1;
0053  dyr=dyr-10000.;
0054 }
0055 dhr=floor(hms);
0056 dsc=100.*(hms-dhr);
0057 if(dsc>80.){
0058  dhr=dhr+1;
0059  dsc=dsc-100.;
0060 }
0061 dmn=floor(dsc);
0062 dsc=100.*(dsc-dmn);
0063 if(dsc>80.){
0064  dmn=dmn+1;
0065  dsc=dsc-100.;
0066 }
0067
0068 if(dmo<2.1){
0069  dyr=dyr-1.;
0070  dmo=dmo+13.;
0071 }
0072 else dmo=dmo+1.;
0073 d=floor(365.25*dyr)+floor(30.6001*dmo)+ddy+1720982.-2433283.;
0074 d=d+dhr/24.+dmn/1440.+dsc/86400.;
0075 return d;
0076}
0077
0078/****************************************************
0079   ref Julian day -2433283 with fraction of a day
0080   ret mm.ddyyyy
0081****************************************************/
0082double mdyday(double ref)
0083{
0084 double day3,dmo,ddy,dyr;
0085 
0086 day3=floor(ref);
0087 day3=day3+2433283.-1720982;
0088 dyr=floor((day3-122.1)/365.25);
0089 dmo=floor((day3-floor(365.25*dyr))/30.6001);
0090 ddy=day3-floor(365.25*dyr)-floor(30.6001*dmo);
0091 dmo=dmo-1.;
0092 if(dmo>12.5) dmo=dmo-12.;
0093 if(dmo<2.5) dyr=dyr+1.;
0094 dmo=dmo+0.01*ddy+0.000001*dyr;
0095 return dmo;
0096}
0097 
0098
0099/****************************************************
0100   ref Julian day -2433283 with fraction of a day
0101   ret hh.mmss
0102****************************************************/
0103double hmsday(double ref)
0104{
0105 double day3,h,dmn;
0106 
0107 day3=floor(ref);
0108 h=ref-day3;
0109 day3=h*24.;
0110 h=floor(day3);
0111 day3=(day3-h)*60.;
0112 dmn=floor(day3);
0113 day3=(day3-dmn)*60.;
0114 h=h+0.01*dmn+0.0001*day3;
0115 return h;
0116}
0117
0118