home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / astrnomy / de118i.zip / RDNUMS.C < prev    next >
C/C++ Source or Header  |  1992-05-28  |  2KB  |  126 lines

  1. #include <stdio.h>
  2. #include "mconf.h"
  3. #include "prec.h"
  4. #include "ssystem.h"
  5.  
  6.  
  7. /* rdnums.c
  8.  */
  9.  
  10. static FILE *in;
  11. char *fgets();
  12.  
  13. struct number
  14.     {
  15.     DOUBLE *val;
  16.     int n;
  17.     };
  18. extern DOUBLE JD0, JD1, C, EMRAT, KG, AU, RADS, RADM, RADE, AE, AM;
  19. extern DOUBLE K2M, LOVENO, PHASE, PSLP1, PSLPI, PSLPIA, PSLPIB;
  20. extern DOUBLE JDEPOCH, LBET, LGAM, LGAMBET;
  21. extern DOUBLE CMRSQ, CMR2, BMR2, AMR2;
  22. extern DOUBLE yn0[], yn1[], GMs[], Je[], Jm[], Cnm[], Snm[];
  23.  
  24. struct number nums[] = {
  25. {&JD0, 1},
  26. {yn0, 72},
  27. {&JD1, 1},
  28. {yn1, 72},
  29. {&C, 1},
  30. {&EMRAT, 1},
  31. {&KG, 1},
  32. {GMs, 17},
  33. {&AU, 1},
  34. {&RADS, 1},
  35. {&RADM, 1},
  36. {&RADE, 1},
  37. {&AE, 1},
  38. {Je, 3},
  39. {&AM, 1},
  40. {Jm,3},
  41. {Cnm, 8},
  42. {Snm, 8},
  43. {&K2M, 1},
  44. {&LOVENO, 1},
  45. {&PHASE, 1},
  46. {&PSLP1, 1},
  47. {&PSLPI, 1},
  48. {&PSLPIA, 1},
  49. {&PSLPIB, 1},
  50. {&JDEPOCH, 1},
  51. {&LBET, 1},
  52. {&LGAM, 1},
  53. {&LGAMBET, 1},
  54. {&CMRSQ, 1},
  55. {&CMR2, 1},
  56. {&BMR2, 1},
  57. {&AMR2, 1},
  58. {NULL, 0}
  59. };
  60.  
  61. rdnums()
  62. {
  63. char str[128];
  64. #if LDOUBLE
  65. long double x;
  66. long double *px;
  67. #else
  68. double x;
  69. double *px;
  70. #endif
  71. struct number *pnum;
  72. int i, n;
  73.  
  74. printf( "Reading in physical parameters...\n" );
  75. in = fopen( "aconst.h", "r" );
  76. if( in == NULL )
  77.     {
  78.     printf( "can't find aconst.h\n" );
  79.     exit(0);
  80.     }
  81.  
  82. pnum = nums;
  83.  
  84. inloop:
  85. px = pnum->val;
  86. n = pnum->n;
  87. if( n <= 0 )
  88.     goto done;
  89. for( i=0; i<n; i++ )
  90.     {
  91. nxtline:
  92.     if( fgets( str, 80, in ) == NULL )
  93.         {
  94.         printf( "aconst.h file i/o error\n" );
  95.         exit(0);
  96.         }
  97.     if( str[0] == ';' )
  98.         goto nxtline;
  99. #if LDOUBLE
  100.     asctoe64( str, &x );
  101. #else
  102.     asctoe53( str, &x );
  103. #endif
  104.     if( *px != x )
  105.         {
  106. #if LDOUBLE
  107.         e64toasc( px, str, 25 );
  108.         printf( "%s changed to ", str );
  109.         e64toasc( &x, str, 25 );
  110.         printf( "%s\n", str );
  111. #else
  112.         e53toasc( px, str, 18 );
  113.         printf( "%s changed to ", str );
  114.         e53toasc( &x, str, 18 );
  115.         printf( "%s\n", str );
  116. #endif
  117.         *px = x;
  118.         }
  119.     ++px;
  120.     }
  121. ++pnum;
  122. goto inloop;
  123. done:
  124. fclose(in);
  125. }
  126.