single-physics.c
1 //! @file single-physics.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-2023 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 //! Physical constants from GSL.
25
26 #include "a68g.h"
27 #include "a68g-genie.h"
28 #include "a68g-prelude.h"
29 #include "a68g-physics.h"
30 #include "a68g-numbers.h"
31
32 #if defined (HAVE_GSL)
33
34 A68_ENV_REAL (genie_cgs_acre, GSL_CONST_CGSM_ACRE);
35 A68_ENV_REAL (genie_cgs_angstrom, GSL_CONST_CGSM_ANGSTROM);
36 A68_ENV_REAL (genie_cgs_astronomical_unit, GSL_CONST_CGSM_ASTRONOMICAL_UNIT);
37 A68_ENV_REAL (genie_cgs_bar, GSL_CONST_CGSM_BAR);
38 A68_ENV_REAL (genie_cgs_barn, GSL_CONST_CGSM_BARN);
39 A68_ENV_REAL (genie_cgs_bohr_magneton, GSL_CONST_CGSM_BOHR_MAGNETON);
40 A68_ENV_REAL (genie_cgs_bohr_radius, GSL_CONST_CGSM_BOHR_RADIUS);
41 A68_ENV_REAL (genie_cgs_boltzmann, GSL_CONST_CGSM_BOLTZMANN);
42 A68_ENV_REAL (genie_cgs_btu, GSL_CONST_CGSM_BTU);
43 A68_ENV_REAL (genie_cgs_calorie, GSL_CONST_CGSM_CALORIE);
44 A68_ENV_REAL (genie_cgs_canadian_gallon, GSL_CONST_CGSM_CANADIAN_GALLON);
45 A68_ENV_REAL (genie_cgs_carat, GSL_CONST_CGSM_CARAT);
46 A68_ENV_REAL (genie_cgs_cup, GSL_CONST_CGSM_CUP);
47 A68_ENV_REAL (genie_cgs_curie, GSL_CONST_CGSM_CURIE);
48 A68_ENV_REAL (genie_cgs_day, GSL_CONST_CGSM_DAY);
49 A68_ENV_REAL (genie_cgs_dyne, GSL_CONST_CGSM_DYNE);
50 A68_ENV_REAL (genie_cgs_electron_charge, GSL_CONST_CGSM_ELECTRON_CHARGE);
51 A68_ENV_REAL (genie_cgs_electron_magnetic_moment, GSL_CONST_CGSM_ELECTRON_MAGNETIC_MOMENT);
52 A68_ENV_REAL (genie_cgs_electron_volt, GSL_CONST_CGSM_ELECTRON_VOLT);
53 A68_ENV_REAL (genie_cgs_erg, GSL_CONST_CGSM_ERG);
54 A68_ENV_REAL (genie_cgs_faraday, GSL_CONST_CGSM_FARADAY);
55 A68_ENV_REAL (genie_cgs_fathom, GSL_CONST_CGSM_FATHOM);
56 A68_ENV_REAL (genie_cgs_fluid_ounce, GSL_CONST_CGSM_FLUID_OUNCE);
57 A68_ENV_REAL (genie_cgs_foot, GSL_CONST_CGSM_FOOT);
58 A68_ENV_REAL (genie_cgs_footcandle, GSL_CONST_CGSM_FOOTCANDLE);
59 A68_ENV_REAL (genie_cgs_footlambert, GSL_CONST_CGSM_FOOTLAMBERT);
60 A68_ENV_REAL (genie_cgs_gauss, GSL_CONST_CGSM_GAUSS);
61 A68_ENV_REAL (genie_cgs_gram_force, GSL_CONST_CGSM_GRAM_FORCE);
62 A68_ENV_REAL (genie_cgs_grav_accel, GSL_CONST_CGSM_GRAV_ACCEL);
63 A68_ENV_REAL (genie_cgs_gravitational_constant, GSL_CONST_CGSM_GRAVITATIONAL_CONSTANT);
64 A68_ENV_REAL (genie_cgs_hectare, GSL_CONST_CGSM_HECTARE);
65 A68_ENV_REAL (genie_cgs_horsepower, GSL_CONST_CGSM_HORSEPOWER);
66 A68_ENV_REAL (genie_cgs_hour, GSL_CONST_CGSM_HOUR);
67 A68_ENV_REAL (genie_cgs_inch, GSL_CONST_CGSM_INCH);
68 A68_ENV_REAL (genie_cgs_inch_of_mercury, GSL_CONST_CGSM_INCH_OF_MERCURY);
69 A68_ENV_REAL (genie_cgs_inch_of_water, GSL_CONST_CGSM_INCH_OF_WATER);
70 A68_ENV_REAL (genie_cgs_joule, GSL_CONST_CGSM_JOULE);
71 A68_ENV_REAL (genie_cgs_kilometers_per_hour, GSL_CONST_CGSM_KILOMETERS_PER_HOUR);
72 A68_ENV_REAL (genie_cgs_kilopound_force, GSL_CONST_CGSM_KILOPOUND_FORCE);
73 A68_ENV_REAL (genie_cgs_knot, GSL_CONST_CGSM_KNOT);
74 A68_ENV_REAL (genie_cgs_lambert, GSL_CONST_CGSM_LAMBERT);
75 A68_ENV_REAL (genie_cgs_light_year, GSL_CONST_CGSM_LIGHT_YEAR);
76 A68_ENV_REAL (genie_cgs_liter, GSL_CONST_CGSM_LITER);
77 A68_ENV_REAL (genie_cgs_lumen, GSL_CONST_CGSM_LUMEN);
78 A68_ENV_REAL (genie_cgs_lux, GSL_CONST_CGSM_LUX);
79 A68_ENV_REAL (genie_cgs_mass_electron, GSL_CONST_CGSM_MASS_ELECTRON);
80 A68_ENV_REAL (genie_cgs_mass_muon, GSL_CONST_CGSM_MASS_MUON);
81 A68_ENV_REAL (genie_cgs_mass_neutron, GSL_CONST_CGSM_MASS_NEUTRON);
82 A68_ENV_REAL (genie_cgs_mass_proton, GSL_CONST_CGSM_MASS_PROTON);
83 A68_ENV_REAL (genie_cgs_meter_of_mercury, GSL_CONST_CGSM_METER_OF_MERCURY);
84 A68_ENV_REAL (genie_cgs_metric_ton, GSL_CONST_CGSM_METRIC_TON);
85 A68_ENV_REAL (genie_cgs_micron, GSL_CONST_CGSM_MICRON);
86 A68_ENV_REAL (genie_cgs_mil, GSL_CONST_CGSM_MIL);
87 A68_ENV_REAL (genie_cgs_mile, GSL_CONST_CGSM_MILE);
88 A68_ENV_REAL (genie_cgs_miles_per_hour, GSL_CONST_CGSM_MILES_PER_HOUR);
89 A68_ENV_REAL (genie_cgs_minute, GSL_CONST_CGSM_MINUTE);
90 A68_ENV_REAL (genie_cgs_molar_gas, GSL_CONST_CGSM_MOLAR_GAS);
91 A68_ENV_REAL (genie_cgs_nautical_mile, GSL_CONST_CGSM_NAUTICAL_MILE);
92 A68_ENV_REAL (genie_cgs_newton, GSL_CONST_CGSM_NEWTON);
93 A68_ENV_REAL (genie_cgs_nuclear_magneton, GSL_CONST_CGSM_NUCLEAR_MAGNETON);
94 A68_ENV_REAL (genie_cgs_ounce_mass, GSL_CONST_CGSM_OUNCE_MASS);
95 A68_ENV_REAL (genie_cgs_parsec, GSL_CONST_CGSM_PARSEC);
96 A68_ENV_REAL (genie_cgs_phot, GSL_CONST_CGSM_PHOT);
97 A68_ENV_REAL (genie_cgs_pint, GSL_CONST_CGSM_PINT);
98 A68_ENV_REAL (genie_cgs_planck_constant_h, 6.6260693e-27);
99 A68_ENV_REAL (genie_cgs_planck_constant_hbar, 6.6260693e-27 / (2 * CONST_PI));
100 A68_ENV_REAL (genie_cgs_point, GSL_CONST_CGSM_POINT);
101 A68_ENV_REAL (genie_cgs_poise, GSL_CONST_CGSM_POISE);
102 A68_ENV_REAL (genie_cgs_pound_force, GSL_CONST_CGSM_POUND_FORCE);
103 A68_ENV_REAL (genie_cgs_pound_mass, GSL_CONST_CGSM_POUND_MASS);
104 A68_ENV_REAL (genie_cgs_poundal, GSL_CONST_CGSM_POUNDAL);
105 A68_ENV_REAL (genie_cgs_proton_magnetic_moment, GSL_CONST_CGSM_PROTON_MAGNETIC_MOMENT);
106 A68_ENV_REAL (genie_cgs_psi, GSL_CONST_CGSM_PSI);
107 A68_ENV_REAL (genie_cgs_quart, GSL_CONST_CGSM_QUART);
108 A68_ENV_REAL (genie_cgs_rad, GSL_CONST_CGSM_RAD);
109 A68_ENV_REAL (genie_cgs_roentgen, GSL_CONST_CGSM_ROENTGEN);
110 A68_ENV_REAL (genie_cgs_rydberg, GSL_CONST_CGSM_RYDBERG);
111 A68_ENV_REAL (genie_cgs_solar_mass, GSL_CONST_CGSM_SOLAR_MASS);
112 A68_ENV_REAL (genie_cgs_speed_of_light, GSL_CONST_CGSM_SPEED_OF_LIGHT);
113 A68_ENV_REAL (genie_cgs_standard_gas_volume, GSL_CONST_CGSM_STANDARD_GAS_VOLUME);
114 A68_ENV_REAL (genie_cgs_std_atmosphere, GSL_CONST_CGSM_STD_ATMOSPHERE);
115 A68_ENV_REAL (genie_cgs_stilb, GSL_CONST_CGSM_STILB);
116 A68_ENV_REAL (genie_cgs_stokes, GSL_CONST_CGSM_STOKES);
117 A68_ENV_REAL (genie_cgs_tablespoon, GSL_CONST_CGSM_TABLESPOON);
118 A68_ENV_REAL (genie_cgs_teaspoon, GSL_CONST_CGSM_TEASPOON);
119 A68_ENV_REAL (genie_cgs_texpoint, GSL_CONST_CGSM_TEXPOINT);
120 A68_ENV_REAL (genie_cgs_therm, GSL_CONST_CGSM_THERM);
121 A68_ENV_REAL (genie_cgs_ton, GSL_CONST_CGSM_TON);
122 A68_ENV_REAL (genie_cgs_torr, GSL_CONST_CGSM_TORR);
123 A68_ENV_REAL (genie_cgs_troy_ounce, GSL_CONST_CGSM_TROY_OUNCE);
124 A68_ENV_REAL (genie_cgs_uk_gallon, GSL_CONST_CGSM_UK_GALLON);
125 A68_ENV_REAL (genie_cgs_uk_ton, GSL_CONST_CGSM_UK_TON);
126 A68_ENV_REAL (genie_cgs_unified_atomic_mass, GSL_CONST_CGSM_UNIFIED_ATOMIC_MASS);
127 A68_ENV_REAL (genie_cgs_us_gallon, GSL_CONST_CGSM_US_GALLON);
128 A68_ENV_REAL (genie_cgs_week, GSL_CONST_CGSM_WEEK);
129 A68_ENV_REAL (genie_cgs_yard, GSL_CONST_CGSM_YARD);
130 A68_ENV_REAL (genie_mks_acre, GSL_CONST_MKS_ACRE);
131 A68_ENV_REAL (genie_mks_angstrom, GSL_CONST_MKS_ANGSTROM);
132 A68_ENV_REAL (genie_mks_astronomical_unit, GSL_CONST_MKS_ASTRONOMICAL_UNIT);
133 A68_ENV_REAL (genie_mks_bar, GSL_CONST_MKS_BAR);
134 A68_ENV_REAL (genie_mks_barn, GSL_CONST_MKS_BARN);
135 A68_ENV_REAL (genie_mks_bohr_magneton, GSL_CONST_MKS_BOHR_MAGNETON);
136 A68_ENV_REAL (genie_mks_bohr_radius, GSL_CONST_MKS_BOHR_RADIUS);
137 A68_ENV_REAL (genie_mks_boltzmann, GSL_CONST_MKS_BOLTZMANN);
138 A68_ENV_REAL (genie_mks_btu, GSL_CONST_MKS_BTU);
139 A68_ENV_REAL (genie_mks_calorie, GSL_CONST_MKS_CALORIE);
140 A68_ENV_REAL (genie_mks_canadian_gallon, GSL_CONST_MKS_CANADIAN_GALLON);
141 A68_ENV_REAL (genie_mks_carat, GSL_CONST_MKS_CARAT);
142 A68_ENV_REAL (genie_mks_cup, GSL_CONST_MKS_CUP);
143 A68_ENV_REAL (genie_mks_curie, GSL_CONST_MKS_CURIE);
144 A68_ENV_REAL (genie_mks_day, GSL_CONST_MKS_DAY);
145 A68_ENV_REAL (genie_mks_dyne, GSL_CONST_MKS_DYNE);
146 A68_ENV_REAL (genie_mks_electron_charge, GSL_CONST_MKS_ELECTRON_CHARGE);
147 A68_ENV_REAL (genie_mks_electron_magnetic_moment, GSL_CONST_MKS_ELECTRON_MAGNETIC_MOMENT);
148 A68_ENV_REAL (genie_mks_electron_volt, GSL_CONST_MKS_ELECTRON_VOLT);
149 A68_ENV_REAL (genie_mks_erg, GSL_CONST_MKS_ERG);
150 A68_ENV_REAL (genie_mks_faraday, GSL_CONST_MKS_FARADAY);
151 A68_ENV_REAL (genie_mks_fathom, GSL_CONST_MKS_FATHOM);
152 A68_ENV_REAL (genie_mks_fluid_ounce, GSL_CONST_MKS_FLUID_OUNCE);
153 A68_ENV_REAL (genie_mks_foot, GSL_CONST_MKS_FOOT);
154 A68_ENV_REAL (genie_mks_footcandle, GSL_CONST_MKS_FOOTCANDLE);
155 A68_ENV_REAL (genie_mks_footlambert, GSL_CONST_MKS_FOOTLAMBERT);
156 A68_ENV_REAL (genie_mks_gauss, GSL_CONST_MKS_GAUSS);
157 A68_ENV_REAL (genie_mks_gram_force, GSL_CONST_MKS_GRAM_FORCE);
158 A68_ENV_REAL (genie_mks_grav_accel, GSL_CONST_MKS_GRAV_ACCEL);
159 A68_ENV_REAL (genie_mks_gravitational_constant, GSL_CONST_MKS_GRAVITATIONAL_CONSTANT);
160 A68_ENV_REAL (genie_mks_hectare, GSL_CONST_MKS_HECTARE);
161 A68_ENV_REAL (genie_mks_horsepower, GSL_CONST_MKS_HORSEPOWER);
162 A68_ENV_REAL (genie_mks_hour, GSL_CONST_MKS_HOUR);
163 A68_ENV_REAL (genie_mks_inch, GSL_CONST_MKS_INCH);
164 A68_ENV_REAL (genie_mks_inch_of_mercury, GSL_CONST_MKS_INCH_OF_MERCURY);
165 A68_ENV_REAL (genie_mks_inch_of_water, GSL_CONST_MKS_INCH_OF_WATER);
166 A68_ENV_REAL (genie_mks_joule, GSL_CONST_MKS_JOULE);
167 A68_ENV_REAL (genie_mks_kilometers_per_hour, GSL_CONST_MKS_KILOMETERS_PER_HOUR);
168 A68_ENV_REAL (genie_mks_kilopound_force, GSL_CONST_MKS_KILOPOUND_FORCE);
169 A68_ENV_REAL (genie_mks_knot, GSL_CONST_MKS_KNOT);
170 A68_ENV_REAL (genie_mks_lambert, GSL_CONST_MKS_LAMBERT);
171 A68_ENV_REAL (genie_mks_light_year, GSL_CONST_MKS_LIGHT_YEAR);
172 A68_ENV_REAL (genie_mks_liter, GSL_CONST_MKS_LITER);
173 A68_ENV_REAL (genie_mks_lumen, GSL_CONST_MKS_LUMEN);
174 A68_ENV_REAL (genie_mks_lux, GSL_CONST_MKS_LUX);
175 A68_ENV_REAL (genie_mks_mass_electron, GSL_CONST_MKS_MASS_ELECTRON);
176 A68_ENV_REAL (genie_mks_mass_muon, GSL_CONST_MKS_MASS_MUON);
177 A68_ENV_REAL (genie_mks_mass_neutron, GSL_CONST_MKS_MASS_NEUTRON);
178 A68_ENV_REAL (genie_mks_mass_proton, GSL_CONST_MKS_MASS_PROTON);
179 A68_ENV_REAL (genie_mks_meter_of_mercury, GSL_CONST_MKS_METER_OF_MERCURY);
180 A68_ENV_REAL (genie_mks_metric_ton, GSL_CONST_MKS_METRIC_TON);
181 A68_ENV_REAL (genie_mks_micron, GSL_CONST_MKS_MICRON);
182 A68_ENV_REAL (genie_mks_mil, GSL_CONST_MKS_MIL);
183 A68_ENV_REAL (genie_mks_mile, GSL_CONST_MKS_MILE);
184 A68_ENV_REAL (genie_mks_miles_per_hour, GSL_CONST_MKS_MILES_PER_HOUR);
185 A68_ENV_REAL (genie_mks_minute, GSL_CONST_MKS_MINUTE);
186 A68_ENV_REAL (genie_mks_molar_gas, GSL_CONST_MKS_MOLAR_GAS);
187 A68_ENV_REAL (genie_mks_nautical_mile, GSL_CONST_MKS_NAUTICAL_MILE);
188 A68_ENV_REAL (genie_mks_newton, GSL_CONST_MKS_NEWTON);
189 A68_ENV_REAL (genie_mks_nuclear_magneton, GSL_CONST_MKS_NUCLEAR_MAGNETON);
190 A68_ENV_REAL (genie_mks_ounce_mass, GSL_CONST_MKS_OUNCE_MASS);
191 A68_ENV_REAL (genie_mks_parsec, GSL_CONST_MKS_PARSEC);
192 A68_ENV_REAL (genie_mks_phot, GSL_CONST_MKS_PHOT);
193 A68_ENV_REAL (genie_mks_pint, GSL_CONST_MKS_PINT);
194 A68_ENV_REAL (genie_mks_planck_constant_h, 6.6260693e-34);
195 A68_ENV_REAL (genie_mks_planck_constant_hbar, 6.6260693e-34 / (2 * CONST_PI));
196 A68_ENV_REAL (genie_mks_point, GSL_CONST_MKS_POINT);
197 A68_ENV_REAL (genie_mks_poise, GSL_CONST_MKS_POISE);
198 A68_ENV_REAL (genie_mks_pound_force, GSL_CONST_MKS_POUND_FORCE);
199 A68_ENV_REAL (genie_mks_pound_mass, GSL_CONST_MKS_POUND_MASS);
200 A68_ENV_REAL (genie_mks_poundal, GSL_CONST_MKS_POUNDAL);
201 A68_ENV_REAL (genie_mks_proton_magnetic_moment, GSL_CONST_MKS_PROTON_MAGNETIC_MOMENT);
202 A68_ENV_REAL (genie_mks_psi, GSL_CONST_MKS_PSI);
203 A68_ENV_REAL (genie_mks_quart, GSL_CONST_MKS_QUART);
204 A68_ENV_REAL (genie_mks_rad, GSL_CONST_MKS_RAD);
205 A68_ENV_REAL (genie_mks_roentgen, GSL_CONST_MKS_ROENTGEN);
206 A68_ENV_REAL (genie_mks_rydberg, GSL_CONST_MKS_RYDBERG);
207 A68_ENV_REAL (genie_mks_solar_mass, GSL_CONST_MKS_SOLAR_MASS);
208 A68_ENV_REAL (genie_mks_speed_of_light, GSL_CONST_MKS_SPEED_OF_LIGHT);
209 A68_ENV_REAL (genie_mks_standard_gas_volume, GSL_CONST_MKS_STANDARD_GAS_VOLUME);
210 A68_ENV_REAL (genie_mks_std_atmosphere, GSL_CONST_MKS_STD_ATMOSPHERE);
211 A68_ENV_REAL (genie_mks_stilb, GSL_CONST_MKS_STILB);
212 A68_ENV_REAL (genie_mks_stokes, GSL_CONST_MKS_STOKES);
213 A68_ENV_REAL (genie_mks_tablespoon, GSL_CONST_MKS_TABLESPOON);
214 A68_ENV_REAL (genie_mks_teaspoon, GSL_CONST_MKS_TEASPOON);
215 A68_ENV_REAL (genie_mks_texpoint, GSL_CONST_MKS_TEXPOINT);
216 A68_ENV_REAL (genie_mks_therm, GSL_CONST_MKS_THERM);
217 A68_ENV_REAL (genie_mks_ton, GSL_CONST_MKS_TON);
218 A68_ENV_REAL (genie_mks_torr, GSL_CONST_MKS_TORR);
219 A68_ENV_REAL (genie_mks_troy_ounce, GSL_CONST_MKS_TROY_OUNCE);
220 A68_ENV_REAL (genie_mks_uk_gallon, GSL_CONST_MKS_UK_GALLON);
221 A68_ENV_REAL (genie_mks_uk_ton, GSL_CONST_MKS_UK_TON);
222 A68_ENV_REAL (genie_mks_unified_atomic_mass, GSL_CONST_MKS_UNIFIED_ATOMIC_MASS);
223 A68_ENV_REAL (genie_mks_us_gallon, GSL_CONST_MKS_US_GALLON);
224 A68_ENV_REAL (genie_mks_vacuum_permeability, GSL_CONST_MKS_VACUUM_PERMEABILITY);
225 A68_ENV_REAL (genie_mks_vacuum_permittivity, GSL_CONST_MKS_VACUUM_PERMITTIVITY);
226 A68_ENV_REAL (genie_mks_week, GSL_CONST_MKS_WEEK);
227 A68_ENV_REAL (genie_mks_yard, GSL_CONST_MKS_YARD);
228 A68_ENV_REAL (genie_num_atto, GSL_CONST_NUM_ATTO);
229 A68_ENV_REAL (genie_num_avogadro, GSL_CONST_NUM_AVOGADRO);
230 A68_ENV_REAL (genie_num_exa, GSL_CONST_NUM_EXA);
231 A68_ENV_REAL (genie_num_femto, GSL_CONST_NUM_FEMTO);
232 A68_ENV_REAL (genie_num_fine_structure, GSL_CONST_NUM_FINE_STRUCTURE);
233 A68_ENV_REAL (genie_num_giga, GSL_CONST_NUM_GIGA);
234 A68_ENV_REAL (genie_num_kilo, GSL_CONST_NUM_KILO);
235 A68_ENV_REAL (genie_num_mega, GSL_CONST_NUM_MEGA);
236 A68_ENV_REAL (genie_num_micro, GSL_CONST_NUM_MICRO);
237 A68_ENV_REAL (genie_num_milli, GSL_CONST_NUM_MILLI);
238 A68_ENV_REAL (genie_num_nano, GSL_CONST_NUM_NANO);
239 A68_ENV_REAL (genie_num_peta, GSL_CONST_NUM_PETA);
240 A68_ENV_REAL (genie_num_pico, GSL_CONST_NUM_PICO);
241 A68_ENV_REAL (genie_num_tera, GSL_CONST_NUM_TERA);
242 A68_ENV_REAL (genie_num_yocto, GSL_CONST_NUM_YOCTO);
243 A68_ENV_REAL (genie_num_yotta, GSL_CONST_NUM_YOTTA);
244 A68_ENV_REAL (genie_num_zepto, GSL_CONST_NUM_ZEPTO);
245 A68_ENV_REAL (genie_num_zetta, GSL_CONST_NUM_ZETTA);
246
247 #endif