plugin-tables.c

     
   1  //! @file plugin-tables.c
   2  //! @author J. Marcel van der Veer
   3  
   4  //! @section Copyright
   5  //!
   6  //! This file is part of Algol68G - an Algol 68 compiler-interpreter.
   7  //! Copyright 2001-2024 J. Marcel van der Veer [algol68g@xs4all.nl].
   8  
   9  //! @section License
  10  //!
  11  //! This program is free software; you can redistribute it and/or modify it 
  12  //! under the terms of the GNU General Public License as published by the 
  13  //! Free Software Foundation; either version 3 of the License, or 
  14  //! (at your option) any later version.
  15  //!
  16  //! This program is distributed in the hope that it will be useful, but 
  17  //! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
  18  //! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 
  19  //! more details. You should have received a copy of the GNU General Public 
  20  //! License along with this program. If not, see [http://www.gnu.org/licenses/].
  21  
  22  //! @section Synopsis
  23  //!
  24  //! Plugin compiler tables.
  25  
  26  #include "a68g.h"
  27  #include "a68g-prelude.h"
  28  #include "a68g-prelude-gsl.h"
  29  #include "a68g-genie.h"
  30  #include "a68g-mp.h"
  31  #include "a68g-optimiser.h"
  32  #include "a68g-plugin.h"
  33  #include "a68g-transput.h"
  34  
  35  TRANSLATION *monadics, *dyadics, *functions;
  36  
  37  TRANSLATION monadics_nocheck[] = {
  38    {genie_minus_int, "-"},
  39    {genie_minus_real, "-"},
  40    {genie_abs_int, "labs"},
  41    {genie_abs_real, "fabs"},
  42    {genie_sign_int, "SIGN"},
  43    {genie_sign_real, "SIGN"},
  44    {genie_entier_real, "a68_entier"},
  45    {genie_round_real, "a68_round"},
  46    {genie_not_bool, "!"},
  47    {genie_abs_bool, "(int) "},
  48    {genie_abs_bits, "(INT_T) "},
  49    {genie_bin_int, "(UNSIGNED_T) "},
  50    {genie_not_bits, "~"},
  51    {genie_abs_char, "TO_UCHAR"},
  52    {genie_repr_char, ""},
  53    {genie_re_complex, "a68_re_complex"},
  54    {genie_im_complex, "a68_im_complex"},
  55    {genie_minus_complex, "a68_min_realus_complex"},
  56    {genie_abs_complex, "a68_abs_real_complex"},
  57    {genie_arg_complex, "a68_arg_complex"},
  58    {genie_conj_complex, "a68_conj_complex"},
  59    {genie_idle, ""},
  60    {NO_GPROC, NO_TEXT}
  61  };
  62  
  63  TRANSLATION monadics_check[] = {
  64    {genie_minus_int, "-"},
  65    {genie_minus_real, "-"},
  66    {genie_abs_int, "labs"},
  67    {genie_abs_real, "fabs"},
  68    {genie_sign_int, "SIGN"},
  69    {genie_sign_real, "SIGN"},
  70    {genie_not_bool, "!"},
  71    {genie_abs_bool, "(int) "},
  72    {genie_abs_bits, "(INT_T) "},
  73    {genie_bin_int, "(UNSIGNED_T) "},
  74    {genie_not_bits, "~"},
  75    {genie_abs_char, "TO_UCHAR"},
  76    {genie_repr_char, ""},
  77    {genie_re_complex, "a68_re_complex"},
  78    {genie_im_complex, "a68_im_complex"},
  79    {genie_minus_complex, "a68_min_realus_complex"},
  80    {genie_abs_complex, "a68_abs_real_complex"},
  81    {genie_arg_complex, "a68_arg_complex"},
  82    {genie_conj_complex, "a68_conj_complex"},
  83    {genie_idle, ""},
  84    {NO_GPROC, NO_TEXT}
  85  };
  86  
  87  TRANSLATION dyadics_nocheck[] = {
  88    {genie_add_int, "+"},
  89    {genie_sub_int, "-"},
  90    {genie_mul_int, "*"},
  91    {genie_over_int, "/"},
  92    {genie_mod_int, "a68_mod_int"},
  93    {genie_div_int, "a68_div_int"},
  94    {genie_eq_int, "=="},
  95    {genie_ne_int, "!="},
  96    {genie_lt_int, "<"},
  97    {genie_gt_int, ">"},
  98    {genie_le_int, "<="},
  99    {genie_ge_int, ">="},
 100    {genie_plusab_int, "a68_plusab_int"},
 101    {genie_minusab_int, "a68_min_realusab_int"},
 102    {genie_timesab_int, "a68_timesab_int"},
 103    {genie_overab_int, "a68_overab_int"},
 104    {genie_add_real, "+"},
 105    {genie_sub_real, "-"},
 106    {genie_mul_real, "*"},
 107    {genie_div_real, "/"},
 108    {genie_pow_real, "a68_x_up_y"},
 109    {genie_pow_real_int, "a68_x_up_n_real"},
 110    {genie_eq_real, "=="},
 111    {genie_ne_real, "!="},
 112    {genie_lt_real, "<"},
 113    {genie_gt_real, ">"},
 114    {genie_le_real, "<="},
 115    {genie_ge_real, ">="},
 116    {genie_plusab_real, "a68_plusab_real"},
 117    {genie_minusab_real, "a68_min_realusab_real"},
 118    {genie_timesab_real, "a68_timesab_real"},
 119    {genie_divab_real, "a68_divab_real"},
 120    {genie_eq_char, "=="},
 121    {genie_ne_char, "!="},
 122    {genie_lt_char, "<"},
 123    {genie_gt_char, ">"},
 124    {genie_le_char, "<="},
 125    {genie_ge_char, ">="},
 126    {genie_eq_bool, "=="},
 127    {genie_ne_bool, "!="},
 128    {genie_and_bool, "&&"},
 129    {genie_or_bool, "||"},
 130    {genie_and_bits, "&"},
 131    {genie_or_bits, "|"},
 132    {genie_eq_bits, "=="},
 133    {genie_ne_bits, "!="},
 134    {genie_shl_bits, "<<"},
 135    {genie_shr_bits, ">>"},
 136    {genie_i_complex, "a68_i_complex"},
 137    {genie_i_int_complex, "a68_i_complex"},
 138    {genie_abs_complex, "a68_abs_real_complex"},
 139    {genie_arg_complex, "a68_arg_complex"},
 140    {genie_add_complex, "a68_add_complex"},
 141    {genie_sub_complex, "a68_sub_complex"},
 142    {genie_mul_complex, "a68_mul_complex"},
 143    {genie_div_complex, "a68_div_complex"},
 144    {genie_eq_complex, "a68_eq_complex"},
 145    {genie_ne_complex, "a68_ne_complex"},
 146    {NO_GPROC, NO_TEXT}
 147  };
 148  
 149  TRANSLATION dyadics_check[] = {
 150    {genie_add_int, "a68_add_int"},
 151    {genie_sub_int, "a68_sub_int"},
 152    {genie_mul_int, "a68_mul_int"},
 153    {genie_over_int, "a68_over_int"},
 154    {genie_mod_int, "a68_mod_int"},
 155    {genie_div_int, "a68_div_int"},
 156    {genie_add_real, "+"},
 157    {genie_sub_real, "-"},
 158    {genie_mul_real, "*"},
 159    {genie_div_real, "/"},
 160    {genie_pow_real, "a68_x_up_y"},
 161    {genie_pow_real_int, "a68_x_up_n_real"},
 162    {genie_eq_int, "=="},
 163    {genie_ne_int, "!="},
 164    {genie_lt_int, "<"},
 165    {genie_gt_int, ">"},
 166    {genie_le_int, "<="},
 167    {genie_ge_int, ">="},
 168    {genie_eq_real, "=="},
 169    {genie_ne_real, "!="},
 170    {genie_lt_real, "<"},
 171    {genie_gt_real, ">"},
 172    {genie_le_real, "<="},
 173    {genie_ge_real, ">="},
 174    {genie_eq_char, "=="},
 175    {genie_ne_char, "!="},
 176    {genie_lt_char, "<"},
 177    {genie_gt_char, ">"},
 178    {genie_le_char, "<="},
 179    {genie_ge_char, ">="},
 180    {genie_eq_bool, "=="},
 181    {genie_ne_bool, "!="},
 182    {genie_and_bool, "&&"},
 183    {genie_or_bool, "||"},
 184    {genie_and_bits, "&"},
 185    {genie_or_bits, "|"},
 186    {genie_eq_bits, "=="},
 187    {genie_ne_bits, "!="},
 188    {genie_i_complex, "a68_i_complex"},
 189    {genie_i_int_complex, "a68_i_complex"},
 190    {genie_abs_complex, "a68_abs_real_complex"},
 191    {genie_arg_complex, "a68_arg_complex"},
 192    {genie_add_complex, "a68_add_complex"},
 193    {genie_sub_complex, "a68_sub_complex"},
 194    {genie_mul_complex, "a68_mul_complex"},
 195    {genie_div_complex, "a68_div_complex"},
 196    {genie_eq_complex, "a68_eq_complex"},
 197    {genie_ne_complex, "a68_ne_complex"},
 198    {NO_GPROC, NO_TEXT}
 199  };
 200  
 201  TRANSLATION functions_nocheck[] = {
 202    {genie_sqrt_real, "sqrt"},
 203    {genie_curt_real, "cbrt"},
 204    {genie_exp_real, "a68_exp_real"},
 205    {genie_ln_real, "log"},
 206    {genie_log_real, "log10"},
 207    {genie_sin_real, "sin"},
 208    {genie_cos_real, "cos"},
 209    {genie_tan_real, "tan"},
 210    {genie_asin_real, "asin"},
 211    {genie_acos_real, "acos"},
 212    {genie_atan_real, "atan"},
 213    {genie_sinh_real, "sinh"},
 214    {genie_cosh_real, "cosh"},
 215    {genie_tanh_real, "tanh"},
 216    {genie_erfc_real, "erfc"},
 217    {genie_erf_real, "erf"},
 218    {genie_gamma_real, "tgamma"},
 219    {genie_ln_gamma_real, "lgamma"},
 220    {genie_sindg_real, "a68_sindg_real"},
 221    {genie_cosdg_real, "a68_cosdg_real"},
 222    {genie_tandg_real, "a68_tandg_real"},
 223    {genie_asindg_real, "a68_asindg_real"},
 224    {genie_acosdg_real, "a68_acosdg_real"},
 225    {genie_atandg_real, "a68_atandg_real"},
 226    {genie_sqrt_complex, "a68_sqrt_complex"},
 227    {genie_exp_complex, "a68_exp_real_complex"},
 228    {genie_ln_complex, "a68_ln_complex"},
 229    {genie_sin_complex, "a68_sin_complex"},
 230    {genie_cos_complex, "a68_cos_complex"},
 231    {genie_tan_complex, "a68_tan_complex"},
 232    {genie_asin_complex, "a68_asin_complex"},
 233    {genie_acos_complex, "a68_acos_complex"},
 234    {genie_atan_complex, "a68_atan_complex"},
 235    {genie_sinh_complex, "a68_sinh_complex"},
 236    {genie_cosh_complex, "a68_cosh_complex"},
 237    {genie_tanh_complex, "a68_tanh_complex"},
 238    {genie_asinh_complex, "a68_asinh_real_complex"},
 239    {genie_acosh_complex, "a68_acosh_real_complex"},
 240    {genie_atanh_complex, "a68_atanh_real_complex"},
 241    {genie_asinh_real, "a68_asinh_real"},
 242    {genie_acosh_real, "a68_acosh_real"},
 243    {genie_atanh_real, "a68_atanh_real"},
 244    {genie_inverfc_real, "a68_inverfc_real"},
 245    {genie_inverf_real, "a68_inverf_real"},
 246    {NO_GPROC, NO_TEXT}
 247  };
 248  
 249  TRANSLATION functions_check[] = {
 250    {genie_sqrt_real, "sqrt"},
 251    {genie_curt_real, "cbrt"},
 252    {genie_exp_real, "a68_exp_real"},
 253    {genie_ln_real, "log"},
 254    {genie_log_real, "log10"},
 255    {genie_sin_real, "sin"},
 256    {genie_cos_real, "cos"},
 257    {genie_tan_real, "tan"},
 258    {genie_asin_real, "asin"},
 259    {genie_acos_real, "acos"},
 260    {genie_atan_real, "atan"},
 261    {genie_sinh_real, "sinh"},
 262    {genie_cosh_real, "cosh"},
 263    {genie_tanh_real, "tanh"},
 264    {genie_erfc_real, "erfc"},
 265    {genie_erf_real, "erf"},
 266    {genie_gamma_real, "tgamma"},
 267    {genie_ln_gamma_real, "lgamma"},
 268    {genie_sindg_real, "a68_sindg_real"},
 269    {genie_cosdg_real, "a68_cosdg_real"},
 270    {genie_tandg_real, "a68_tandg_real"},
 271    {genie_asindg_real, "a68_asindg_real"},
 272    {genie_acosdg_real, "a68_acosdg_real"},
 273    {genie_atandg_real, "a68_atandg_real"},
 274    {genie_asinh_real, "a68_asinh_real"},
 275    {genie_acosh_real, "a68_acosh_real"},
 276    {genie_atanh_real, "a68_atanh_real"},
 277    {genie_inverfc_real, "a68_inverfc_real"},
 278    {genie_inverf_real, "a68_inverf_real"},
 279    {NO_GPROC, NO_TEXT}
 280  };
 281  
 282  TRANSLATION constants[] = {
 283    {genie_int_lengths, "3"},
 284    {genie_int_shorths, "1"},
 285    {genie_real_lengths, "3"},
 286    {genie_real_shorths, "1"},
 287    {genie_complex_lengths, "3"},
 288    {genie_complex_shorths, "1"},
 289  #if (A68_LEVEL >= 3)
 290    {genie_bits_lengths, "2"},
 291  #else
 292    {genie_bits_lengths, "3"},
 293  #endif
 294    {genie_bits_shorths, "1"},
 295    {genie_bytes_lengths, "2"},
 296    {genie_bytes_shorths, "1"},
 297    {genie_int_width, "A68_INT_WIDTH"},
 298    {genie_long_int_width, "A68_LONG_INT_WIDTH"},
 299    {genie_long_mp_int_width, "A68_LONG_LONG_INT_WIDTH"},
 300    {genie_real_width, "A68_REAL_WIDTH"},
 301    {genie_long_real_width, "A68_LONG_REAL_WIDTH"},
 302    {genie_long_mp_real_width, "A68_LONG_LONG_REAL_WIDTH"},
 303    {genie_exp_width, "A68_EXP_WIDTH"},
 304    {genie_long_exp_width, "A68_LONG_EXP_WIDTH"},
 305    {genie_long_mp_exp_width, "A68_LONG_LONG_EXP_WIDTH"},
 306    {genie_bits_width, "A68_BITS_WIDTH"},
 307    {genie_bytes_width, "A68_BYTES_WIDTH"},
 308    {genie_long_bytes_width, "A68_LONG_BYTES_WIDTH"},
 309    {genie_max_abs_char, "UCHAR_MAX"},
 310    {genie_max_int, "A68_MAX_INT"},
 311    {genie_max_real, "A68_REAL_MAX"},
 312    {genie_min_real, "A68_REAL_MIN"},
 313    {genie_null_char, "NULL_CHAR"},
 314    {genie_small_real, "A68_REAL_EPS"},
 315    {genie_pi, "A68_PI"},
 316  
 317  #if defined (HAVE_GSL)
 318  
 319    {genie_cgs_acre, "GSL_CONST_CGSM_ACRE"},
 320    {genie_cgs_angstrom, "GSL_CONST_CGSM_ANGSTROM"},
 321    {genie_cgs_astronomical_unit, "GSL_CONST_CGSM_ASTRONOMICAL_UNIT"},
 322    {genie_cgs_bar, "GSL_CONST_CGSM_BAR"},
 323    {genie_cgs_barn, "GSL_CONST_CGSM_BARN"},
 324    {genie_cgs_bohr_magneton, "GSL_CONST_CGSM_BOHR_MAGNETON"},
 325    {genie_cgs_bohr_radius, "GSL_CONST_CGSM_BOHR_RADIUS"},
 326    {genie_cgs_boltzmann, "GSL_CONST_CGSM_BOLTZMANN"},
 327    {genie_cgs_btu, "GSL_CONST_CGSM_BTU"},
 328    {genie_cgs_calorie, "GSL_CONST_CGSM_CALORIE"},
 329    {genie_cgs_canadian_gallon, "GSL_CONST_CGSM_CANADIAN_GALLON"},
 330    {genie_cgs_carat, "GSL_CONST_CGSM_CARAT"},
 331    {genie_cgs_cup, "GSL_CONST_CGSM_CUP"},
 332    {genie_cgs_curie, "GSL_CONST_CGSM_CURIE"},
 333    {genie_cgs_day, "GSL_CONST_CGSM_DAY"},
 334    {genie_cgs_dyne, "GSL_CONST_CGSM_DYNE"},
 335    {genie_cgs_electron_charge, "GSL_CONST_CGSM_ELECTRON_CHARGE"},
 336    {genie_cgs_electron_magnetic_moment, "GSL_CONST_CGSM_ELECTRON_MAGNETIC_MOMENT"},
 337    {genie_cgs_electron_volt, "GSL_CONST_CGSM_ELECTRON_VOLT"},
 338    {genie_cgs_erg, "GSL_CONST_CGSM_ERG"},
 339    {genie_cgs_faraday, "GSL_CONST_CGSM_FARADAY"},
 340    {genie_cgs_fathom, "GSL_CONST_CGSM_FATHOM"},
 341    {genie_cgs_fluid_ounce, "GSL_CONST_CGSM_FLUID_OUNCE"},
 342    {genie_cgs_foot, "GSL_CONST_CGSM_FOOT"},
 343    {genie_cgs_footcandle, "GSL_CONST_CGSM_FOOTCANDLE"},
 344    {genie_cgs_footlambert, "GSL_CONST_CGSM_FOOTLAMBERT"},
 345    {genie_cgs_gauss, "GSL_CONST_CGSM_GAUSS"},
 346    {genie_cgs_gram_force, "GSL_CONST_CGSM_GRAM_FORCE"},
 347    {genie_cgs_grav_accel, "GSL_CONST_CGSM_GRAV_ACCEL"},
 348    {genie_cgs_gravitational_constant, "GSL_CONST_CGSM_GRAVITATIONAL_CONSTANT"},
 349    {genie_cgs_hectare, "GSL_CONST_CGSM_HECTARE"},
 350    {genie_cgs_horsepower, "GSL_CONST_CGSM_HORSEPOWER"},
 351    {genie_cgs_hour, "GSL_CONST_CGSM_HOUR"},
 352    {genie_cgs_inch, "GSL_CONST_CGSM_INCH"},
 353    {genie_cgs_inch_of_mercury, "GSL_CONST_CGSM_INCH_OF_MERCURY"},
 354    {genie_cgs_inch_of_water, "GSL_CONST_CGSM_INCH_OF_WATER"},
 355    {genie_cgs_joule, "GSL_CONST_CGSM_JOULE"},
 356    {genie_cgs_kilometers_per_hour, "GSL_CONST_CGSM_KILOMETERS_PER_HOUR"},
 357    {genie_cgs_kilopound_force, "GSL_CONST_CGSM_KILOPOUND_FORCE"},
 358    {genie_cgs_knot, "GSL_CONST_CGSM_KNOT"},
 359    {genie_cgs_lambert, "GSL_CONST_CGSM_LAMBERT"},
 360    {genie_cgs_light_year, "GSL_CONST_CGSM_LIGHT_YEAR"},
 361    {genie_cgs_liter, "GSL_CONST_CGSM_LITER"},
 362    {genie_cgs_lumen, "GSL_CONST_CGSM_LUMEN"},
 363    {genie_cgs_lux, "GSL_CONST_CGSM_LUX"},
 364    {genie_cgs_mass_electron, "GSL_CONST_CGSM_MASS_ELECTRON"},
 365    {genie_cgs_mass_muon, "GSL_CONST_CGSM_MASS_MUON"},
 366    {genie_cgs_mass_neutron, "GSL_CONST_CGSM_MASS_NEUTRON"},
 367    {genie_cgs_mass_proton, "GSL_CONST_CGSM_MASS_PROTON"},
 368    {genie_cgs_meter_of_mercury, "GSL_CONST_CGSM_METER_OF_MERCURY"},
 369    {genie_cgs_metric_ton, "GSL_CONST_CGSM_METRIC_TON"},
 370    {genie_cgs_micron, "GSL_CONST_CGSM_MICRON"},
 371    {genie_cgs_mil, "GSL_CONST_CGSM_MIL"},
 372    {genie_cgs_mile, "GSL_CONST_CGSM_MILE"},
 373    {genie_cgs_miles_per_hour, "GSL_CONST_CGSM_MILES_PER_HOUR"},
 374    {genie_cgs_minute, "GSL_CONST_CGSM_MINUTE"},
 375    {genie_cgs_molar_gas, "GSL_CONST_CGSM_MOLAR_GAS"},
 376    {genie_cgs_nautical_mile, "GSL_CONST_CGSM_NAUTICAL_MILE"},
 377    {genie_cgs_newton, "GSL_CONST_CGSM_NEWTON"},
 378    {genie_cgs_nuclear_magneton, "GSL_CONST_CGSM_NUCLEAR_MAGNETON"},
 379    {genie_cgs_ounce_mass, "GSL_CONST_CGSM_OUNCE_MASS"},
 380    {genie_cgs_parsec, "GSL_CONST_CGSM_PARSEC"},
 381    {genie_cgs_phot, "GSL_CONST_CGSM_PHOT"},
 382    {genie_cgs_pint, "GSL_CONST_CGSM_PINT"},
 383    {genie_cgs_planck_constant_h, "6.6260693e-27"},
 384    {genie_cgs_planck_constant_hbar, "1.0545717e-27"},
 385    {genie_cgs_point, "GSL_CONST_CGSM_POINT"},
 386    {genie_cgs_poise, "GSL_CONST_CGSM_POISE"},
 387    {genie_cgs_pound_force, "GSL_CONST_CGSM_POUND_FORCE"},
 388    {genie_cgs_pound_mass, "GSL_CONST_CGSM_POUND_MASS"},
 389    {genie_cgs_poundal, "GSL_CONST_CGSM_POUNDAL"},
 390    {genie_cgs_proton_magnetic_moment, "GSL_CONST_CGSM_PROTON_MAGNETIC_MOMENT"},
 391    {genie_cgs_psi, "GSL_CONST_CGSM_PSI"},
 392    {genie_cgs_quart, "GSL_CONST_CGSM_QUART"},
 393    {genie_cgs_rad, "GSL_CONST_CGSM_RAD"},
 394    {genie_cgs_roentgen, "GSL_CONST_CGSM_ROENTGEN"},
 395    {genie_cgs_rydberg, "GSL_CONST_CGSM_RYDBERG"},
 396    {genie_cgs_solar_mass, "GSL_CONST_CGSM_SOLAR_MASS"},
 397    {genie_cgs_speed_of_light, "GSL_CONST_CGSM_SPEED_OF_LIGHT"},
 398    {genie_cgs_standard_gas_volume, "GSL_CONST_CGSM_STANDARD_GAS_VOLUME"},
 399    {genie_cgs_std_atmosphere, "GSL_CONST_CGSM_STD_ATMOSPHERE"},
 400    {genie_cgs_stilb, "GSL_CONST_CGSM_STILB"},
 401    {genie_cgs_stokes, "GSL_CONST_CGSM_STOKES"},
 402    {genie_cgs_tablespoon, "GSL_CONST_CGSM_TABLESPOON"},
 403    {genie_cgs_teaspoon, "GSL_CONST_CGSM_TEASPOON"},
 404    {genie_cgs_texpoint, "GSL_CONST_CGSM_TEXPOINT"},
 405    {genie_cgs_therm, "GSL_CONST_CGSM_THERM"},
 406    {genie_cgs_ton, "GSL_CONST_CGSM_TON"},
 407    {genie_cgs_torr, "GSL_CONST_CGSM_TORR"},
 408    {genie_cgs_troy_ounce, "GSL_CONST_CGSM_TROY_OUNCE"},
 409    {genie_cgs_uk_gallon, "GSL_CONST_CGSM_UK_GALLON"},
 410    {genie_cgs_uk_ton, "GSL_CONST_CGSM_UK_TON"},
 411    {genie_cgs_unified_atomic_mass, "GSL_CONST_CGSM_UNIFIED_ATOMIC_MASS"},
 412    {genie_cgs_us_gallon, "GSL_CONST_CGSM_US_GALLON"},
 413    {genie_cgs_week, "GSL_CONST_CGSM_WEEK"},
 414    {genie_cgs_yard, "GSL_CONST_CGSM_YARD"},
 415    {genie_mks_acre, "GSL_CONST_MKS_ACRE"},
 416    {genie_mks_angstrom, "GSL_CONST_MKS_ANGSTROM"},
 417    {genie_mks_astronomical_unit, "GSL_CONST_MKS_ASTRONOMICAL_UNIT"},
 418    {genie_mks_bar, "GSL_CONST_MKS_BAR"},
 419    {genie_mks_barn, "GSL_CONST_MKS_BARN"},
 420    {genie_mks_bohr_magneton, "GSL_CONST_MKS_BOHR_MAGNETON"},
 421    {genie_mks_bohr_radius, "GSL_CONST_MKS_BOHR_RADIUS"},
 422    {genie_mks_boltzmann, "GSL_CONST_MKS_BOLTZMANN"},
 423    {genie_mks_btu, "GSL_CONST_MKS_BTU"},
 424    {genie_mks_calorie, "GSL_CONST_MKS_CALORIE"},
 425    {genie_mks_canadian_gallon, "GSL_CONST_MKS_CANADIAN_GALLON"},
 426    {genie_mks_carat, "GSL_CONST_MKS_CARAT"},
 427    {genie_mks_cup, "GSL_CONST_MKS_CUP"},
 428    {genie_mks_curie, "GSL_CONST_MKS_CURIE"},
 429    {genie_mks_day, "GSL_CONST_MKS_DAY"},
 430    {genie_mks_dyne, "GSL_CONST_MKS_DYNE"},
 431    {genie_mks_electron_charge, "GSL_CONST_MKS_ELECTRON_CHARGE"},
 432    {genie_mks_electron_magnetic_moment, "GSL_CONST_MKS_ELECTRON_MAGNETIC_MOMENT"},
 433    {genie_mks_electron_volt, "GSL_CONST_MKS_ELECTRON_VOLT"},
 434    {genie_mks_erg, "GSL_CONST_MKS_ERG"},
 435    {genie_mks_faraday, "GSL_CONST_MKS_FARADAY"},
 436    {genie_mks_fathom, "GSL_CONST_MKS_FATHOM"},
 437    {genie_mks_fluid_ounce, "GSL_CONST_MKS_FLUID_OUNCE"},
 438    {genie_mks_foot, "GSL_CONST_MKS_FOOT"},
 439    {genie_mks_footcandle, "GSL_CONST_MKS_FOOTCANDLE"},
 440    {genie_mks_footlambert, "GSL_CONST_MKS_FOOTLAMBERT"},
 441    {genie_mks_gauss, "GSL_CONST_MKS_GAUSS"},
 442    {genie_mks_gram_force, "GSL_CONST_MKS_GRAM_FORCE"},
 443    {genie_mks_grav_accel, "GSL_CONST_MKS_GRAV_ACCEL"},
 444    {genie_mks_gravitational_constant, "GSL_CONST_MKS_GRAVITATIONAL_CONSTANT"},
 445    {genie_mks_hectare, "GSL_CONST_MKS_HECTARE"},
 446    {genie_mks_horsepower, "GSL_CONST_MKS_HORSEPOWER"},
 447    {genie_mks_hour, "GSL_CONST_MKS_HOUR"},
 448    {genie_mks_inch, "GSL_CONST_MKS_INCH"},
 449    {genie_mks_inch_of_mercury, "GSL_CONST_MKS_INCH_OF_MERCURY"},
 450    {genie_mks_inch_of_water, "GSL_CONST_MKS_INCH_OF_WATER"},
 451    {genie_mks_joule, "GSL_CONST_MKS_JOULE"},
 452    {genie_mks_kilometers_per_hour, "GSL_CONST_MKS_KILOMETERS_PER_HOUR"},
 453    {genie_mks_kilopound_force, "GSL_CONST_MKS_KILOPOUND_FORCE"},
 454    {genie_mks_knot, "GSL_CONST_MKS_KNOT"},
 455    {genie_mks_lambert, "GSL_CONST_MKS_LAMBERT"},
 456    {genie_mks_light_year, "GSL_CONST_MKS_LIGHT_YEAR"},
 457    {genie_mks_liter, "GSL_CONST_MKS_LITER"},
 458    {genie_mks_lumen, "GSL_CONST_MKS_LUMEN"},
 459    {genie_mks_lux, "GSL_CONST_MKS_LUX"},
 460    {genie_mks_mass_electron, "GSL_CONST_MKS_MASS_ELECTRON"},
 461    {genie_mks_mass_muon, "GSL_CONST_MKS_MASS_MUON"},
 462    {genie_mks_mass_neutron, "GSL_CONST_MKS_MASS_NEUTRON"},
 463    {genie_mks_mass_proton, "GSL_CONST_MKS_MASS_PROTON"},
 464    {genie_mks_meter_of_mercury, "GSL_CONST_MKS_METER_OF_MERCURY"},
 465    {genie_mks_metric_ton, "GSL_CONST_MKS_METRIC_TON"},
 466    {genie_mks_micron, "GSL_CONST_MKS_MICRON"},
 467    {genie_mks_mil, "GSL_CONST_MKS_MIL"},
 468    {genie_mks_mile, "GSL_CONST_MKS_MILE"},
 469    {genie_mks_miles_per_hour, "GSL_CONST_MKS_MILES_PER_HOUR"},
 470    {genie_mks_minute, "GSL_CONST_MKS_MINUTE"},
 471    {genie_mks_molar_gas, "GSL_CONST_MKS_MOLAR_GAS"},
 472    {genie_mks_nautical_mile, "GSL_CONST_MKS_NAUTICAL_MILE"},
 473    {genie_mks_newton, "GSL_CONST_MKS_NEWTON"},
 474    {genie_mks_nuclear_magneton, "GSL_CONST_MKS_NUCLEAR_MAGNETON"},
 475    {genie_mks_ounce_mass, "GSL_CONST_MKS_OUNCE_MASS"},
 476    {genie_mks_parsec, "GSL_CONST_MKS_PARSEC"},
 477    {genie_mks_phot, "GSL_CONST_MKS_PHOT"},
 478    {genie_mks_pint, "GSL_CONST_MKS_PINT"},
 479    {genie_mks_planck_constant_h, "6.6260693e-34"},
 480    {genie_mks_planck_constant_hbar, "1.0545717e-34"},
 481    {genie_mks_point, "GSL_CONST_MKS_POINT"},
 482    {genie_mks_poise, "GSL_CONST_MKS_POISE"},
 483    {genie_mks_pound_force, "GSL_CONST_MKS_POUND_FORCE"},
 484    {genie_mks_pound_mass, "GSL_CONST_MKS_POUND_MASS"},
 485    {genie_mks_poundal, "GSL_CONST_MKS_POUNDAL"},
 486    {genie_mks_proton_magnetic_moment, "GSL_CONST_MKS_PROTON_MAGNETIC_MOMENT"},
 487    {genie_mks_psi, "GSL_CONST_MKS_PSI"},
 488    {genie_mks_quart, "GSL_CONST_MKS_QUART"},
 489    {genie_mks_rad, "GSL_CONST_MKS_RAD"},
 490    {genie_mks_roentgen, "GSL_CONST_MKS_ROENTGEN"},
 491    {genie_mks_rydberg, "GSL_CONST_MKS_RYDBERG"},
 492    {genie_mks_solar_mass, "GSL_CONST_MKS_SOLAR_MASS"},
 493    {genie_mks_speed_of_light, "GSL_CONST_MKS_SPEED_OF_LIGHT"},
 494    {genie_mks_standard_gas_volume, "GSL_CONST_MKS_STANDARD_GAS_VOLUME"},
 495    {genie_mks_std_atmosphere, "GSL_CONST_MKS_STD_ATMOSPHERE"},
 496    {genie_mks_stilb, "GSL_CONST_MKS_STILB"},
 497    {genie_mks_stokes, "GSL_CONST_MKS_STOKES"},
 498    {genie_mks_tablespoon, "GSL_CONST_MKS_TABLESPOON"},
 499    {genie_mks_teaspoon, "GSL_CONST_MKS_TEASPOON"},
 500    {genie_mks_texpoint, "GSL_CONST_MKS_TEXPOINT"},
 501    {genie_mks_therm, "GSL_CONST_MKS_THERM"},
 502    {genie_mks_ton, "GSL_CONST_MKS_TON"},
 503    {genie_mks_torr, "GSL_CONST_MKS_TORR"},
 504    {genie_mks_troy_ounce, "GSL_CONST_MKS_TROY_OUNCE"},
 505    {genie_mks_uk_gallon, "GSL_CONST_MKS_UK_GALLON"},
 506    {genie_mks_uk_ton, "GSL_CONST_MKS_UK_TON"},
 507    {genie_mks_unified_atomic_mass, "GSL_CONST_MKS_UNIFIED_ATOMIC_MASS"},
 508    {genie_mks_us_gallon, "GSL_CONST_MKS_US_GALLON"},
 509    {genie_mks_vacuum_permeability, "GSL_CONST_MKS_VACUUM_PERMEABILITY"},
 510    {genie_mks_vacuum_permittivity, "GSL_CONST_MKS_VACUUM_PERMITTIVITY"},
 511    {genie_mks_week, "GSL_CONST_MKS_WEEK"},
 512    {genie_mks_yard, "GSL_CONST_MKS_YARD"},
 513    {genie_num_atto, "GSL_CONST_NUM_ATTO"},
 514    {genie_num_avogadro, "GSL_CONST_NUM_AVOGADRO"},
 515    {genie_num_exa, "GSL_CONST_NUM_EXA"},
 516    {genie_num_femto, "GSL_CONST_NUM_FEMTO"},
 517    {genie_num_fine_structure, "GSL_CONST_NUM_FINE_STRUCTURE"},
 518    {genie_num_giga, "GSL_CONST_NUM_GIGA"},
 519    {genie_num_kilo, "GSL_CONST_NUM_KILO"},
 520    {genie_num_mega, "GSL_CONST_NUM_MEGA"},
 521    {genie_num_micro, "GSL_CONST_NUM_MICRO"},
 522    {genie_num_milli, "GSL_CONST_NUM_MILLI"},
 523    {genie_num_nano, "GSL_CONST_NUM_NANO"},
 524    {genie_num_peta, "GSL_CONST_NUM_PETA"},
 525    {genie_num_pico, "GSL_CONST_NUM_PICO"},
 526    {genie_num_tera, "GSL_CONST_NUM_TERA"},
 527    {genie_num_yocto, "GSL_CONST_NUM_YOCTO"},
 528    {genie_num_yotta, "GSL_CONST_NUM_YOTTA"},
 529    {genie_num_zepto, "GSL_CONST_NUM_ZEPTO"},
 530    {genie_num_zetta, "GSL_CONST_NUM_ZETTA"},
 531  
 532  #endif
 533  
 534    {NO_GPROC, NO_TEXT}
 535  };
 536