prelude-gsl.c
1 //! @file prelude-gsl.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 //! Standard prelude definitions from GSL.
25
26 #include "a68g.h"
27 #include "a68g-prelude.h"
28 #include "a68g-prelude-gsl.h"
29
30 #if defined (HAVE_GSL)
31
32 void stand_gsl_sf (void)
33 {
34 a68_idf (A68_EXT, "airyai", A68_MCACHE (proc_real_real), genie_airy_ai_real);
35 a68_idf (A68_EXT, "airyaiscaled", A68_MCACHE (proc_real_real), genie_airy_ai_scaled_real);
36 a68_idf (A68_EXT, "airybi", A68_MCACHE (proc_real_real), genie_airy_bi_real);
37 a68_idf (A68_EXT, "airybiscaled", A68_MCACHE (proc_real_real), genie_airy_bi_scaled_real);
38 a68_idf (A68_EXT, "besselin0", A68_MCACHE (proc_real_real), genie_bessel_in0_real);
39 a68_idf (A68_EXT, "besselin1", A68_MCACHE (proc_real_real), genie_bessel_in1_real);
40 a68_idf (A68_EXT, "besselin0scaled", A68_MCACHE (proc_real_real), genie_bessel_in0_scaled_real);
41 a68_idf (A68_EXT, "besselin1scaled", A68_MCACHE (proc_real_real), genie_bessel_in1_scaled_real);
42 a68_idf (A68_EXT, "besseljn0", A68_MCACHE (proc_real_real), genie_bessel_jn0_real);
43 a68_idf (A68_EXT, "besseljn1", A68_MCACHE (proc_real_real), genie_bessel_jn1_real);
44 a68_idf (A68_EXT, "besselkn0", A68_MCACHE (proc_real_real), genie_bessel_kn0_real);
45 a68_idf (A68_EXT, "besselkn1", A68_MCACHE (proc_real_real), genie_bessel_kn1_real);
46 a68_idf (A68_EXT, "besselkn0scaled", A68_MCACHE (proc_real_real), genie_bessel_kn0_scaled_real);
47 a68_idf (A68_EXT, "besselkn1scaled", A68_MCACHE (proc_real_real), genie_bessel_kn1_scaled_real);
48 a68_idf (A68_EXT, "besselyn0", A68_MCACHE (proc_real_real), genie_bessel_yn0_real);
49 a68_idf (A68_EXT, "besselyn1", A68_MCACHE (proc_real_real), genie_bessel_yn1_real);
50 a68_idf (A68_EXT, "expinte1", A68_MCACHE (proc_real_real), genie_expint_e1_real);
51 a68_idf (A68_EXT, "expintei", A68_MCACHE (proc_real_real), genie_expint_ei_real);
52 a68_idf (A68_EXT, "dawson", A68_MCACHE (proc_real_real), genie_dawson_real);
53 a68_idf (A68_EXT, "exprel", A68_MCACHE (proc_real_real), genie_exprel_real);
54 a68_idf (A68_EXT, "betaincgsl", A68_MCACHE (proc_real_real_real_real), genie_beta_inc_real);
55 a68_idf (A68_EXT, "poch", A68_MCACHE (proc_real_real_real), genie_poch_real);
56 a68_idf (A68_EXT, "digamma", A68_MCACHE (proc_real_real), genie_digamma_real);
57 a68_idf (A68_EXT, "airyaiderivative", A68_MCACHE (proc_real_real), genie_airy_ai_deriv_real);
58 a68_idf (A68_EXT, "airyaideriv", A68_MCACHE (proc_real_real), genie_airy_ai_deriv_real);
59 a68_idf (A68_EXT, "airyaiderivscaled", A68_MCACHE (proc_real_real), genie_airy_ai_deriv_scaled_real);
60 a68_idf (A68_EXT, "airybiderivative", A68_MCACHE (proc_real_real), genie_airy_bi_deriv_real);
61 a68_idf (A68_EXT, "airybideriv", A68_MCACHE (proc_real_real), genie_airy_bi_deriv_real);
62 a68_idf (A68_EXT, "airybiderivscaled", A68_MCACHE (proc_real_real), genie_airy_bi_deriv_scaled_real);
63 a68_idf (A68_EXT, "airyzeroaideriv", A68_MCACHE (proc_int_real), genie_airy_zero_ai_deriv_real);
64 a68_idf (A68_EXT, "airyzeroai", A68_MCACHE (proc_int_real), genie_airy_zero_ai_real);
65 a68_idf (A68_EXT, "airyzerobideriv", A68_MCACHE (proc_int_real), genie_airy_zero_bi_deriv_real);
66 a68_idf (A68_EXT, "airyzerobi", A68_MCACHE (proc_int_real), genie_airy_zero_bi_real);
67 a68_idf (A68_EXT, "anglerestrictpos", A68_MCACHE (proc_real_real), genie_angle_restrict_pos_real);
68 a68_idf (A68_EXT, "anglerestrictsymm", A68_MCACHE (proc_real_real), genie_angle_restrict_symm_real);
69 a68_idf (A68_EXT, "atanint", A68_MCACHE (proc_real_real), genie_atanint_real);
70 a68_idf (A68_EXT, "besselil0scaled", A68_MCACHE (proc_real_real), genie_bessel_il0_scaled_real);
71 a68_idf (A68_EXT, "besselil1scaled", A68_MCACHE (proc_real_real), genie_bessel_il1_scaled_real);
72 a68_idf (A68_EXT, "besselil2scaled", A68_MCACHE (proc_real_real), genie_bessel_il2_scaled_real);
73 a68_idf (A68_EXT, "besselilscaled", A68_MCACHE (proc_int_real_real), genie_bessel_il_scaled_real);
74 a68_idf (A68_EXT, "besselilscaled", A68_MCACHE (proc_real_real), genie_bessel_il_scaled_real);
75 a68_idf (A68_EXT, "besselin", A68_MCACHE (proc_int_real_real), genie_bessel_in_real);
76 a68_idf (A68_EXT, "besselinscaled", A68_MCACHE (proc_int_real_real), genie_bessel_in_scaled_real);
77 a68_idf (A68_EXT, "besselinscaled", A68_MCACHE (proc_real_real), genie_bessel_in_scaled_real);
78 a68_idf (A68_EXT, "besselinu", A68_MCACHE (proc_real_real_real), genie_bessel_inu_real);
79 a68_idf (A68_EXT, "besselinuscaled", A68_MCACHE (proc_real_real_real), genie_bessel_inu_scaled_real);
80 a68_idf (A68_EXT, "besseljl0", A68_MCACHE (proc_real_real), genie_bessel_jl0_real);
81 a68_idf (A68_EXT, "besseljl1", A68_MCACHE (proc_real_real), genie_bessel_jl1_real);
82 a68_idf (A68_EXT, "besseljl2", A68_MCACHE (proc_real_real), genie_bessel_jl2_real);
83 a68_idf (A68_EXT, "besseljl", A68_MCACHE (proc_int_real_real), genie_bessel_jl_real);
84 a68_idf (A68_EXT, "besseljn", A68_MCACHE (proc_int_real_real), genie_bessel_jn_real);
85 a68_idf (A68_EXT, "besselkl0scaled", A68_MCACHE (proc_real_real), genie_bessel_kl0_scaled_real);
86 a68_idf (A68_EXT, "besselkl1scaled", A68_MCACHE (proc_real_real), genie_bessel_kl1_scaled_real);
87 a68_idf (A68_EXT, "besselkl2scaled", A68_MCACHE (proc_real_real), genie_bessel_kl2_scaled_real);
88 a68_idf (A68_EXT, "besselklscaled", A68_MCACHE (proc_int_real_real), genie_bessel_kl_scaled_real);
89 a68_idf (A68_EXT, "besselklscaled", A68_MCACHE (proc_real_real), genie_bessel_kl_scaled_real);
90 a68_idf (A68_EXT, "besselkn", A68_MCACHE (proc_int_real_real), genie_bessel_kn_real);
91 a68_idf (A68_EXT, "besselknscaled", A68_MCACHE (proc_int_real_real), genie_bessel_kn_scaled_real);
92 a68_idf (A68_EXT, "besselkn_scaled", A68_MCACHE (proc_real_real), genie_bessel_kn_scaled_real);
93 a68_idf (A68_EXT, "besselknu", A68_MCACHE (proc_real_real_real), genie_bessel_knu_real);
94 a68_idf (A68_EXT, "besselknuscaled", A68_MCACHE (proc_real_real), genie_bessel_knu_scaled_real);
95 a68_idf (A68_EXT, "besselknuscaled", A68_MCACHE (proc_real_real_real), genie_bessel_knu_scaled_real);
96 a68_idf (A68_EXT, "bessellnknu", A68_MCACHE (proc_real_real), genie_bessel_ln_knu_real);
97 a68_idf (A68_EXT, "bessellnknu", A68_MCACHE (proc_real_real_real), genie_bessel_ln_knu_real);
98 a68_idf (A68_EXT, "besselyl0", A68_MCACHE (proc_real_real), genie_bessel_yl0_real);
99 a68_idf (A68_EXT, "besselyl1", A68_MCACHE (proc_real_real), genie_bessel_yl1_real);
100 a68_idf (A68_EXT, "besselyl2", A68_MCACHE (proc_real_real), genie_bessel_yl2_real);
101 a68_idf (A68_EXT, "besselyl", A68_MCACHE (proc_int_real_real), genie_bessel_yl_real);
102 a68_idf (A68_EXT, "besselyn", A68_MCACHE (proc_int_real_real), genie_bessel_yn_real);
103 a68_idf (A68_EXT, "besselynu", A68_MCACHE (proc_real_real_real), genie_bessel_ynu_real);
104 a68_idf (A68_EXT, "besselzeroj0", A68_MCACHE (proc_int_real), genie_bessel_zero_jnu0_real);
105 a68_idf (A68_EXT, "besselzeroj1", A68_MCACHE (proc_int_real), genie_bessel_zero_jnu1_real);
106 a68_idf (A68_EXT, "besselzerojnu", A68_MCACHE (proc_int_real_real), genie_bessel_zero_jnu_real);
107 a68_idf (A68_EXT, "chi", A68_MCACHE (proc_real_real), genie_chi_real);
108 a68_idf (A68_EXT, "ci", A68_MCACHE (proc_real_real), genie_ci_real);
109 a68_idf (A68_EXT, "clausen", A68_MCACHE (proc_real_real), genie_clausen_real);
110 a68_idf (A68_EXT, "conicalp0", A68_MCACHE (proc_real_real_real), genie_conicalp_0_real);
111 a68_idf (A68_EXT, "conicalp1", A68_MCACHE (proc_real_real_real), genie_conicalp_1_real);
112 a68_idf (A68_EXT, "conicalpcylreg", A68_MCACHE (proc_int_real_real_real), genie_conicalp_cyl_reg_real);
113 a68_idf (A68_EXT, "conicalphalf", A68_MCACHE (proc_real_real_real), genie_conicalp_half_real);
114 a68_idf (A68_EXT, "conicalpmhalf", A68_MCACHE (proc_real_real_real), genie_conicalp_mhalf_real);
115 a68_idf (A68_EXT, "conicalpsphreg", A68_MCACHE (proc_int_real_real_real), genie_conicalp_sph_reg_real);
116 a68_idf (A68_EXT, "debye1", A68_MCACHE (proc_real_real), genie_debye_1_real);
117 a68_idf (A68_EXT, "debye2", A68_MCACHE (proc_real_real), genie_debye_2_real);
118 a68_idf (A68_EXT, "debye3", A68_MCACHE (proc_real_real), genie_debye_3_real);
119 a68_idf (A68_EXT, "debye4", A68_MCACHE (proc_real_real), genie_debye_4_real);
120 a68_idf (A68_EXT, "debye5", A68_MCACHE (proc_real_real), genie_debye_5_real);
121 a68_idf (A68_EXT, "debye6", A68_MCACHE (proc_real_real), genie_debye_6_real);
122 a68_idf (A68_EXT, "dilog", A68_MCACHE (proc_real_real), genie_dilog_real);
123 a68_idf (A68_EXT, "doublefact", A68_MCACHE (proc_int_real), genie_doublefact_real);
124 a68_idf (A68_EXT, "ellintd", A68_MCACHE (proc_real_real_real), genie_ellint_d_real);
125 a68_idf (A68_EXT, "ellintecomp", A68_MCACHE (proc_real_real), genie_ellint_e_comp_real);
126 a68_idf (A68_EXT, "ellinte", A68_MCACHE (proc_real_real_real), genie_ellint_e_real);
127 a68_idf (A68_EXT, "ellintf", A68_MCACHE (proc_real_real_real), genie_ellint_f_real);
128 a68_idf (A68_EXT, "ellintkcomp", A68_MCACHE (proc_real_real), genie_ellint_k_comp_real);
129 a68_idf (A68_EXT, "ellintpcomp", A68_MCACHE (proc_real_real_real), genie_ellint_p_comp_real);
130 a68_idf (A68_EXT, "ellintp", A68_MCACHE (proc_real_real_real_real), genie_ellint_p_real);
131 a68_idf (A68_EXT, "ellintrc", A68_MCACHE (proc_real_real_real), genie_ellint_rc_real);
132 a68_idf (A68_EXT, "ellintrd", A68_MCACHE (proc_real_real_real_real), genie_ellint_rd_real);
133 a68_idf (A68_EXT, "ellintrf", A68_MCACHE (proc_real_real_real_real), genie_ellint_rf_real);
134 a68_idf (A68_EXT, "ellintrj", A68_MCACHE (proc_real_real_real_real_real), genie_ellint_rj_real);
135 a68_idf (A68_EXT, "etaint", A68_MCACHE (proc_int_real), genie_etaint_real);
136 a68_idf (A68_EXT, "eta", A68_MCACHE (proc_real_real), genie_eta_real);
137 a68_idf (A68_EXT, "expint3", A68_MCACHE (proc_real_real), genie_expint_3_real);
138 a68_idf (A68_EXT, "expinte2", A68_MCACHE (proc_real_real), genie_expint_e2_real);
139 a68_idf (A68_EXT, "expinten", A68_MCACHE (proc_int_real_real), genie_expint_en_real);
140 a68_idf (A68_EXT, "expm1", A68_MCACHE (proc_real_real), genie_expm1_real);
141 a68_idf (A68_EXT, "exprel2", A68_MCACHE (proc_real_real), genie_exprel_2_real);
142 a68_idf (A68_EXT, "expreln", A68_MCACHE (proc_int_real_real), genie_exprel_n_real);
143 a68_idf (A68_EXT, "fermidirac0", A68_MCACHE (proc_real_real), genie_fermi_dirac_0_real);
144 a68_idf (A68_EXT, "fermidirac1", A68_MCACHE (proc_real_real), genie_fermi_dirac_1_real);
145 a68_idf (A68_EXT, "fermidirac2", A68_MCACHE (proc_real_real), genie_fermi_dirac_2_real);
146 a68_idf (A68_EXT, "fermidirac3half", A68_MCACHE (proc_real_real), genie_fermi_dirac_3half_real);
147 a68_idf (A68_EXT, "fermidirachalf", A68_MCACHE (proc_real_real), genie_fermi_dirac_half_real);
148 a68_idf (A68_EXT, "fermidiracinc0", A68_MCACHE (proc_real_real_real), genie_fermi_dirac_inc_0_real);
149 a68_idf (A68_EXT, "fermidiracint", A68_MCACHE (proc_int_real_real), genie_fermi_dirac_int_real);
150 a68_idf (A68_EXT, "fermidiracm1", A68_MCACHE (proc_real_real), genie_fermi_dirac_m1_real);
151 a68_idf (A68_EXT, "fermidiracmhalf", A68_MCACHE (proc_real_real), genie_fermi_dirac_mhalf_real);
152 a68_idf (A68_EXT, "gammaincgsl", A68_MCACHE (proc_real_real_real), genie_gamma_inc_real);
153 a68_idf (A68_EXT, "gammaincp", A68_MCACHE (proc_real_real_real), genie_gamma_inc_p_real);
154 a68_idf (A68_EXT, "gammaincq", A68_MCACHE (proc_real_real_real), genie_gamma_inc_q_real);
155 a68_idf (A68_EXT, "gammainv", A68_MCACHE (proc_real_real), genie_gammainv_real);
156 a68_idf (A68_EXT, "gammastar", A68_MCACHE (proc_real_real), genie_gammastar_real);
157 a68_idf (A68_EXT, "gegenpoly1real", A68_MCACHE (proc_real_real_real), genie_gegenpoly_1_real);
158 a68_idf (A68_EXT, "gegenpoly2real", A68_MCACHE (proc_real_real_real), genie_gegenpoly_2_real);
159 a68_idf (A68_EXT, "gegenpoly3real", A68_MCACHE (proc_real_real_real), genie_gegenpoly_3_real);
160 a68_idf (A68_EXT, "gegenpolynreal", A68_MCACHE (proc_real_real_real), genie_gegenpoly_n_real);
161 a68_idf (A68_EXT, "hermitefunc", A68_MCACHE (proc_int_real_real), genie_hermite_func_real);
162 a68_idf (A68_EXT, "hypot", A68_MCACHE (proc_real_real_real), genie_hypot_real);
163 a68_idf (A68_EXT, "hzeta", A68_MCACHE (proc_real_real_real), genie_hzeta_real);
164 a68_idf (A68_EXT, "laguerre1real", A68_MCACHE (proc_real_real_real), genie_laguerre_1_real);
165 a68_idf (A68_EXT, "laguerre2real", A68_MCACHE (proc_real_real_real), genie_laguerre_2_real);
166 a68_idf (A68_EXT, "laguerre3real", A68_MCACHE (proc_real_real_real), genie_laguerre_3_real);
167 a68_idf (A68_EXT, "laguerrenreal", A68_MCACHE (proc_real_real_real), genie_laguerre_n_real);
168 a68_idf (A68_EXT, "lambertw0", A68_MCACHE (proc_real_real), genie_lambert_w0_real);
169 a68_idf (A68_EXT, "lambertwm1", A68_MCACHE (proc_real_real), genie_lambert_wm1_real);
170 a68_idf (A68_EXT, "legendreh3d0", A68_MCACHE (proc_real_real_real), genie_legendre_h3d_0_real);
171 a68_idf (A68_EXT, "legendreh3d1", A68_MCACHE (proc_real_real_real), genie_legendre_h3d_1_real);
172 a68_idf (A68_EXT, "legendreh3d", A68_MCACHE (proc_int_real_real_real), genie_legendre_H3d_real);
173 a68_idf (A68_EXT, "legendrep1", A68_MCACHE (proc_real_real), genie_legendre_p1_real);
174 a68_idf (A68_EXT, "legendrep2", A68_MCACHE (proc_real_real), genie_legendre_p2_real);
175 a68_idf (A68_EXT, "legendrep3", A68_MCACHE (proc_real_real), genie_legendre_p3_real);
176 a68_idf (A68_EXT, "legendrepl", A68_MCACHE (proc_int_real_real), genie_legendre_pl_real);
177 a68_idf (A68_EXT, "legendreq0", A68_MCACHE (proc_real_real), genie_legendre_q0_real);
178 a68_idf (A68_EXT, "legendreq1", A68_MCACHE (proc_real_real), genie_legendre_q1_real);
179 a68_idf (A68_EXT, "legendreql", A68_MCACHE (proc_int_real_real), genie_legendre_ql_real);
180 a68_idf (A68_EXT, "lncosh", A68_MCACHE (proc_real_real), genie_lncosh_real);
181 a68_idf (A68_EXT, "lndoublefact", A68_MCACHE (proc_int_real), genie_lndoublefact_real);
182 a68_idf (A68_EXT, "lnpoch", A68_MCACHE (proc_real_real_real), genie_lnpoch_real);
183 a68_idf (A68_EXT, "lnsinh", A68_MCACHE (proc_real_real), genie_lnsinh_real);
184 a68_idf (A68_EXT, "ln1plusxmx", A68_MCACHE (proc_real_real), genie_log_1plusx_mx_real);
185 a68_idf (A68_EXT, "ln1plusx", A68_MCACHE (proc_real_real), genie_log_1plusx_real);
186 a68_idf (A68_EXT, "lnabs", A68_MCACHE (proc_real_real), genie_log_abs_real);
187 a68_idf (A68_EXT, "pochrel", A68_MCACHE (proc_real_real_real), genie_pochrel_real);
188 a68_idf (A68_EXT, "psi1int", A68_MCACHE (proc_int_real), genie_psi_1_int_real);
189 a68_idf (A68_EXT, "psi1piy", A68_MCACHE (proc_real_real), genie_psi_1piy_real);
190 a68_idf (A68_EXT, "psi1", A68_MCACHE (proc_real_real), genie_psi_1_real);
191 a68_idf (A68_EXT, "psiint", A68_MCACHE (proc_int_real), genie_psi_int_real);
192 a68_idf (A68_EXT, "psin", A68_MCACHE (proc_int_real_real), genie_psi_n_real);
193 a68_idf (A68_EXT, "psi", A68_MCACHE (proc_real_real), genie_psi_real);
194 a68_idf (A68_EXT, "shi", A68_MCACHE (proc_real_real), genie_shi_real);
195 a68_idf (A68_EXT, "sinc", A68_MCACHE (proc_real_real), genie_sinc_real);
196 a68_idf (A68_EXT, "si", A68_MCACHE (proc_real_real), genie_si_real);
197 a68_idf (A68_EXT, "synchrotron1", A68_MCACHE (proc_real_real), genie_synchrotron_1_real);
198 a68_idf (A68_EXT, "synchrotron2", A68_MCACHE (proc_real_real), genie_synchrotron_2_real);
199 a68_idf (A68_EXT, "taylorcoeff", A68_MCACHE (proc_int_real_real), genie_taylorcoeff_real);
200 a68_idf (A68_EXT, "transport2", A68_MCACHE (proc_real_real), genie_transport_2_real);
201 a68_idf (A68_EXT, "transport3", A68_MCACHE (proc_real_real), genie_transport_3_real);
202 a68_idf (A68_EXT, "transport4", A68_MCACHE (proc_real_real), genie_transport_4_real);
203 a68_idf (A68_EXT, "transport5", A68_MCACHE (proc_real_real), genie_transport_5_real);
204 a68_idf (A68_EXT, "zetaint", A68_MCACHE (proc_int_real), genie_zeta_int_real);
205 a68_idf (A68_EXT, "zetam1int", A68_MCACHE (proc_int_real), genie_zetam1_int_real);
206 a68_idf (A68_EXT, "zetam1", A68_MCACHE (proc_real_real), genie_zetam1_real);
207 a68_idf (A68_EXT, "zeta", A68_MCACHE (proc_real_real), genie_zeta_real);
208 }
209
210 void stand_gsl_linear_algebra (void)
211 {
212 // Vector and matrix pretty print.
213 MOID_T *m = a68_proc (M_VOID, M_ROW_REAL, M_INT, NO_MOID);
214 a68_idf (A68_EXT, "printvector", m, genie_print_vector);
215 m = a68_proc (M_VOID, M_ROW_ROW_REAL, M_INT, NO_MOID);
216 a68_idf (A68_EXT, "printmatrix", m, genie_print_matrix);
217 // Vector and matrix monadic.
218 m = a68_proc (M_ROW_REAL, M_ROW_REAL, NO_MOID);
219 a68_op (A68_EXT, "+", m, genie_idle);
220 a68_op (A68_EXT, "-", m, genie_vector_minus);
221 m = a68_proc (M_ROW_ROW_REAL, M_ROW_REAL, NO_MOID);
222 a68_op (A68_EXT, "CV", m, genie_vector_col);
223 a68_op (A68_EXT, "RV", m, genie_vector_row);
224 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, NO_MOID);
225 a68_op (A68_EXT, "+", m, genie_idle);
226 a68_op (A68_EXT, "-", m, genie_matrix_minus);
227 a68_op (A68_EXT, "T", m, genie_matrix_transpose);
228 a68_op (A68_EXT, "INV", m, genie_matrix_inv);
229 a68_op (A68_EXT, "PINV", m, genie_matrix_pinv);
230 a68_op (A68_EXT, "MEAN", m, genie_matrix_column_mean);
231 m = a68_proc (M_REAL, M_ROW_ROW_REAL, NO_MOID);
232 a68_op (A68_EXT, "DET", m, genie_matrix_det);
233 a68_op (A68_EXT, "TRACE", m, genie_matrix_trace);
234 m = a68_proc (M_ROW_COMPLEX, M_ROW_COMPLEX, NO_MOID);
235 a68_op (A68_EXT, "+", m, genie_idle);
236 a68_op (A68_EXT, "-", m, genie_vector_complex_minus);
237 m = a68_proc (M_ROW_ROW_COMPLEX, M_ROW_ROW_COMPLEX, NO_MOID);
238 a68_op (A68_EXT, "+", m, genie_idle);
239 a68_op (A68_EXT, "-", m, genie_matrix_complex_minus);
240 a68_op (A68_EXT, "T", m, genie_matrix_complex_transpose);
241 a68_op (A68_EXT, "INV", m, genie_matrix_complex_inv);
242 m = a68_proc (M_COMPLEX, M_ROW_ROW_COMPLEX, NO_MOID);
243 a68_op (A68_EXT, "DET", m, genie_matrix_complex_det);
244 a68_op (A68_EXT, "TRACE", m, genie_matrix_complex_trace);
245 // Vector and matrix dyadic.
246 m = a68_proc (M_BOOL, M_ROW_REAL, M_ROW_REAL, NO_MOID);
247 a68_op (A68_EXT, "=", m, genie_vector_eq);
248 a68_op (A68_EXT, "/=", m, genie_vector_ne);
249 m = a68_proc (M_ROW_REAL, M_ROW_REAL, M_ROW_REAL, NO_MOID);
250 a68_op (A68_EXT, "+", m, genie_vector_add);
251 a68_op (A68_EXT, "-", m, genie_vector_sub);
252 m = a68_proc (M_REF_ROW_REAL, M_REF_ROW_REAL, M_ROW_REAL, NO_MOID);
253 a68_op (A68_EXT, "+:=", m, genie_vector_plusab);
254 a68_op (A68_EXT, "PLUSAB", m, genie_vector_plusab);
255 a68_op (A68_EXT, "-:=", m, genie_vector_minusab);
256 a68_op (A68_EXT, "MINUSAB", m, genie_vector_minusab);
257 m = a68_proc (M_BOOL, M_ROW_ROW_REAL, M_ROW_ROW_REAL, NO_MOID);
258 a68_op (A68_EXT, "=", m, genie_matrix_eq);
259 a68_op (A68_EXT, "/-", m, genie_matrix_ne);
260 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_ROW_ROW_REAL, NO_MOID);
261 a68_op (A68_EXT, "+", m, genie_matrix_add);
262 a68_op (A68_EXT, "-", m, genie_matrix_sub);
263 a68_op (A68_EXT, "BEFORE", m, genie_matrix_hcat);
264 a68_op (A68_EXT, "ABOVE", m, genie_matrix_vcat);
265 a68_prio ("BEFORE", 3);
266 a68_prio ("ABOVE", 3);
267 m = a68_proc (M_REF_ROW_ROW_REAL, M_REF_ROW_ROW_REAL, M_ROW_ROW_REAL, NO_MOID);
268 a68_op (A68_EXT, "+:=", m, genie_matrix_plusab);
269 a68_op (A68_EXT, "PLUSAB", m, genie_matrix_plusab);
270 a68_op (A68_EXT, "-:=", m, genie_matrix_minusab);
271 a68_op (A68_EXT, "MINUSAB", m, genie_matrix_minusab);
272 m = a68_proc (M_BOOL, M_ROW_COMPLEX, M_ROW_COMPLEX, NO_MOID);
273 a68_op (A68_EXT, "=", m, genie_vector_complex_eq);
274 a68_op (A68_EXT, "/=", m, genie_vector_complex_ne);
275 m = a68_proc (M_ROW_COMPLEX, M_ROW_COMPLEX, M_ROW_COMPLEX, NO_MOID);
276 a68_op (A68_EXT, "+", m, genie_vector_complex_add);
277 a68_op (A68_EXT, "-", m, genie_vector_complex_sub);
278 m = a68_proc (M_REF_ROW_COMPLEX, M_REF_ROW_COMPLEX, M_ROW_COMPLEX, NO_MOID);
279 a68_op (A68_EXT, "+:=", m, genie_vector_complex_plusab);
280 a68_op (A68_EXT, "PLUSAB", m, genie_vector_complex_plusab);
281 a68_op (A68_EXT, "-:=", m, genie_vector_complex_minusab);
282 a68_op (A68_EXT, "MINUSAB", m, genie_vector_complex_minusab);
283 m = a68_proc (M_BOOL, M_ROW_ROW_COMPLEX, M_ROW_ROW_COMPLEX, NO_MOID);
284 a68_op (A68_EXT, "=", m, genie_matrix_complex_eq);
285 a68_op (A68_EXT, "/=", m, genie_matrix_complex_ne);
286 m = a68_proc (M_ROW_ROW_COMPLEX, M_ROW_ROW_COMPLEX, M_ROW_ROW_COMPLEX, NO_MOID);
287 a68_op (A68_EXT, "+", m, genie_matrix_complex_add);
288 a68_op (A68_EXT, "-", m, genie_matrix_complex_sub);
289 m = a68_proc (M_REF_ROW_ROW_COMPLEX, M_REF_ROW_ROW_COMPLEX, M_ROW_ROW_COMPLEX, NO_MOID);
290 a68_op (A68_EXT, "+:=", m, genie_matrix_complex_plusab);
291 a68_op (A68_EXT, "PLUSAB", m, genie_matrix_complex_plusab);
292 a68_op (A68_EXT, "-:=", m, genie_matrix_complex_minusab);
293 a68_op (A68_EXT, "MINUSAB", m, genie_matrix_complex_minusab);
294 // Vector and matrix scaling.
295 m = a68_proc (M_ROW_REAL, M_REAL, M_ROW_REAL, NO_MOID);
296 a68_op (A68_EXT, "*", m, genie_real_scale_vector);
297 m = a68_proc (M_ROW_REAL, M_ROW_REAL, M_REAL, NO_MOID);
298 a68_op (A68_EXT, "*", m, genie_vector_scale_real);
299 a68_op (A68_EXT, "/", m, genie_vector_div_real);
300 m = a68_proc (M_ROW_ROW_REAL, M_REAL, M_ROW_ROW_REAL, NO_MOID);
301 a68_op (A68_EXT, "*", m, genie_real_scale_matrix);
302 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_REAL, NO_MOID);
303 a68_op (A68_EXT, "*", m, genie_matrix_scale_real);
304 a68_op (A68_EXT, "/", m, genie_matrix_div_real);
305 m = a68_proc (M_ROW_COMPLEX, M_COMPLEX, M_ROW_COMPLEX, NO_MOID);
306 a68_op (A68_EXT, "*", m, genie_complex_scale_vector_complex);
307 m = a68_proc (M_ROW_COMPLEX, M_ROW_COMPLEX, M_COMPLEX, NO_MOID);
308 a68_op (A68_EXT, "*", m, genie_vector_complex_scale_complex);
309 a68_op (A68_EXT, "/", m, genie_vector_complex_div_complex);
310 m = a68_proc (M_ROW_ROW_COMPLEX, M_COMPLEX, M_ROW_ROW_COMPLEX, NO_MOID);
311 a68_op (A68_EXT, "*", m, genie_complex_scale_matrix_complex);
312 m = a68_proc (M_ROW_ROW_COMPLEX, M_ROW_ROW_COMPLEX, M_COMPLEX, NO_MOID);
313 a68_op (A68_EXT, "*", m, genie_matrix_complex_scale_complex);
314 a68_op (A68_EXT, "/", m, genie_matrix_complex_div_complex);
315 m = a68_proc (M_REF_ROW_REAL, M_REF_ROW_REAL, M_REAL, NO_MOID);
316 a68_op (A68_EXT, "*:=", m, genie_vector_scale_real_ab);
317 a68_op (A68_EXT, "/:=", m, genie_vector_div_real_ab);
318 m = a68_proc (M_REF_ROW_ROW_REAL, M_REF_ROW_ROW_REAL, M_REAL, NO_MOID);
319 a68_op (A68_EXT, "*:=", m, genie_matrix_scale_real_ab);
320 a68_op (A68_EXT, "/:=", m, genie_matrix_div_real_ab);
321 m = a68_proc (M_REF_ROW_COMPLEX, M_REF_ROW_COMPLEX, M_COMPLEX, NO_MOID);
322 a68_op (A68_EXT, "*:=", m, genie_vector_complex_scale_complex_ab);
323 a68_op (A68_EXT, "/:=", m, genie_vector_complex_div_complex_ab);
324 m = a68_proc (M_REF_ROW_ROW_COMPLEX, M_REF_ROW_ROW_COMPLEX, M_COMPLEX, NO_MOID);
325 a68_op (A68_EXT, "*:=", m, genie_matrix_complex_scale_complex_ab);
326 a68_op (A68_EXT, "/:=", m, genie_matrix_complex_div_complex_ab);
327 m = a68_proc (M_ROW_REAL, M_ROW_REAL, M_ROW_ROW_REAL, NO_MOID);
328 a68_op (A68_EXT, "*", m, genie_vector_times_matrix);
329 m = a68_proc (M_ROW_COMPLEX, M_ROW_COMPLEX, M_ROW_ROW_COMPLEX, NO_MOID);
330 a68_op (A68_EXT, "*", m, genie_vector_complex_times_matrix);
331 // Matrix times vector or matrix.
332 m = a68_proc (M_ROW_REAL, M_ROW_ROW_REAL, M_ROW_REAL, NO_MOID);
333 a68_op (A68_EXT, "*", m, genie_matrix_times_vector);
334 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_ROW_ROW_REAL, NO_MOID);
335 a68_op (A68_EXT, "*", m, genie_matrix_times_matrix);
336 m = a68_proc (M_ROW_COMPLEX, M_ROW_ROW_COMPLEX, M_ROW_COMPLEX, NO_MOID);
337 a68_op (A68_EXT, "*", m, genie_matrix_complex_times_vector);
338 m = a68_proc (M_ROW_ROW_COMPLEX, M_ROW_ROW_COMPLEX, M_ROW_ROW_COMPLEX, NO_MOID);
339 a68_op (A68_EXT, "*", m, genie_matrix_complex_times_matrix);
340 // Vector and matrix miscellaneous.
341 m = a68_proc (M_ROW_REAL, M_ROW_REAL, NO_MOID);
342 a68_idf (A68_EXT, "vectorecho", m, genie_vector_echo);
343 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, NO_MOID);
344 a68_idf (A68_EXT, "matrixecho", m, genie_matrix_echo);
345 m = a68_proc (M_ROW_COMPLEX, M_ROW_COMPLEX, NO_MOID);
346 a68_idf (A68_EXT, "complvectorecho", m, genie_vector_complex_echo);
347 m = a68_proc (M_ROW_ROW_COMPLEX, M_ROW_ROW_COMPLEX, NO_MOID);
348 a68_idf (A68_EXT, "complmatrixecho", m, genie_matrix_complex_echo);
349 m = a68_proc (M_REAL, M_ROW_REAL, M_ROW_REAL, NO_MOID);
350 a68_op (A68_EXT, "*", m, genie_vector_dot);
351 m = a68_proc (M_COMPLEX, M_ROW_COMPLEX, M_ROW_COMPLEX, NO_MOID);
352 a68_op (A68_EXT, "*", m, genie_vector_complex_dot);
353 m = a68_proc (M_REAL, M_ROW_REAL, NO_MOID);
354 a68_op (A68_EXT, "NORM", m, genie_vector_norm);
355 m = a68_proc (M_REAL, M_ROW_ROW_REAL, NO_MOID);
356 a68_op (A68_EXT, "NORM", m, genie_matrix_norm);
357 m = a68_proc (M_REAL, M_ROW_COMPLEX, NO_MOID);
358 a68_op (A68_EXT, "NORM", m, genie_vector_complex_norm);
359 m = a68_proc (M_ROW_ROW_REAL, M_ROW_REAL, M_ROW_REAL, NO_MOID);
360 a68_op (A68_EXT, "DYAD", m, genie_vector_dyad);
361 m = a68_proc (M_ROW_ROW_COMPLEX, M_ROW_COMPLEX, M_ROW_COMPLEX, NO_MOID);
362 a68_op (A68_EXT, "DYAD", m, genie_vector_complex_dyad);
363 a68_prio ("DYAD", 3);
364 // Principle Component Analysis.
365 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_REF_ROW_REAL, NO_MOID);
366 a68_idf (A68_EXT, "pcacv", m, genie_matrix_pca_cv);
367 a68_idf (A68_EXT, "pcasvd", m, genie_matrix_pca_svd);
368 // Total Least Square regression.
369 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_REF_ROW_REAL, NO_MOID);
370 a68_idf (A68_EXT, "ols", m, genie_matrix_ols);
371 a68_idf (A68_EXT, "tls", m, genie_matrix_tls);
372 // Partial Least Squares regression.
373 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_REF_ROW_REAL, M_INT, M_REAL, NO_MOID);
374 a68_idf (A68_EXT, "pcr", m, genie_matrix_pcr);
375 a68_idf (A68_EXT, "pls1", m, genie_matrix_pls1);
376 a68_idf (A68_EXT, "pls2", m, genie_matrix_pls2);
377 // Routine left columns, a GSL alternative to trimming columns.
378 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_INT, NO_MOID);
379 a68_idf (A68_EXT, "leftcolumns", m, genie_left_columns);
380 // Moore-Penrose pseudo inverse.
381 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_REAL, NO_MOID);
382 a68_idf (A68_EXT, "pseudoinv", m, genie_matrix_pinv_lim);
383 // LU decomposition.
384 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_REF_ROW_INT, M_REF_INT, NO_MOID);
385 a68_idf (A68_EXT, "ludecomp", m, genie_matrix_lu);
386 m = a68_proc (M_REAL, M_ROW_ROW_REAL, M_INT, NO_MOID);
387 a68_idf (A68_EXT, "ludet", m, genie_matrix_lu_det);
388 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_ROW_INT, NO_MOID);
389 a68_idf (A68_EXT, "luinv", m, genie_matrix_lu_inv);
390 m = a68_proc (M_ROW_REAL, M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_ROW_INT, M_ROW_REAL, NO_MOID);
391 a68_idf (A68_EXT, "lusolve", m, genie_matrix_lu_solve);
392 m = a68_proc (M_ROW_ROW_COMPLEX, M_ROW_ROW_COMPLEX, M_REF_ROW_INT, M_REF_INT, NO_MOID);
393 a68_idf (A68_EXT, "complexludecomp", m, genie_matrix_complex_lu);
394 m = a68_proc (M_COMPLEX, M_ROW_ROW_COMPLEX, M_INT, NO_MOID);
395 a68_idf (A68_EXT, "complexludet", m, genie_matrix_complex_lu_det);
396 m = a68_proc (M_ROW_ROW_COMPLEX, M_ROW_ROW_COMPLEX, M_ROW_INT, NO_MOID);
397 a68_idf (A68_EXT, "complexluinv", m, genie_matrix_complex_lu_inv);
398 m = a68_proc (M_ROW_COMPLEX, M_ROW_ROW_COMPLEX, M_ROW_ROW_COMPLEX, M_ROW_INT, M_ROW_COMPLEX, NO_MOID);
399 a68_idf (A68_EXT, "complexlusolve", m, genie_matrix_complex_lu_solve);
400 // SVD decomposition.
401 m = a68_proc (M_VOID, M_ROW_ROW_REAL, M_REF_ROW_ROW_REAL, M_REF_ROW_REAL, M_REF_ROW_ROW_REAL, NO_MOID);
402 a68_idf (A68_EXT, "svddecomp", m, genie_matrix_svd);
403 m = a68_proc (M_ROW_REAL, M_ROW_ROW_REAL, M_ROW_REAL, M_ROW_ROW_REAL, M_ROW_REAL, NO_MOID);
404 a68_idf (A68_EXT, "svdsolve", m, genie_matrix_svd_solve);
405 // QR decomposition.
406 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, M_REF_ROW_REAL, NO_MOID);
407 a68_idf (A68_EXT, "qrdecomp", m, genie_matrix_qr);
408 m = a68_proc (M_ROW_REAL, M_ROW_ROW_REAL, M_ROW_REAL, M_ROW_REAL, NO_MOID);
409 a68_idf (A68_EXT, "qrsolve", m, genie_matrix_qr_solve);
410 a68_idf (A68_EXT, "qrlssolve", m, genie_matrix_qr_ls_solve);
411 // Cholesky decomposition.
412 m = a68_proc (M_ROW_ROW_REAL, M_ROW_ROW_REAL, NO_MOID);
413 a68_idf (A68_EXT, "choleskydecomp", m, genie_matrix_ch);
414 m = a68_proc (M_ROW_REAL, M_ROW_ROW_REAL, M_ROW_REAL, NO_MOID);
415 a68_idf (A68_EXT, "choleskysolve", m, genie_matrix_ch_solve);
416 }
417
418 void stand_gsl_constants (void)
419 {
420 // Constants ex GSL.
421 a68_idf (A68_EXT, "cgsspeedoflight", M_REAL, genie_cgs_speed_of_light);
422 a68_idf (A68_EXT, "cgsgravitationalconstant", M_REAL, genie_cgs_gravitational_constant);
423 a68_idf (A68_EXT, "cgsplanckconstant", M_REAL, genie_cgs_planck_constant_h);
424 a68_idf (A68_EXT, "cgsplanckconstantbar", M_REAL, genie_cgs_planck_constant_hbar);
425 a68_idf (A68_EXT, "cgsastronomicalunit", M_REAL, genie_cgs_astronomical_unit);
426 a68_idf (A68_EXT, "cgslightyear", M_REAL, genie_cgs_light_year);
427 a68_idf (A68_EXT, "cgsparsec", M_REAL, genie_cgs_parsec);
428 a68_idf (A68_EXT, "cgsgravaccel", M_REAL, genie_cgs_grav_accel);
429 a68_idf (A68_EXT, "cgselectronvolt", M_REAL, genie_cgs_electron_volt);
430 a68_idf (A68_EXT, "cgsmasselectron", M_REAL, genie_cgs_mass_electron);
431 a68_idf (A68_EXT, "cgsmassmuon", M_REAL, genie_cgs_mass_muon);
432 a68_idf (A68_EXT, "cgsmassproton", M_REAL, genie_cgs_mass_proton);
433 a68_idf (A68_EXT, "cgsmassneutron", M_REAL, genie_cgs_mass_neutron);
434 a68_idf (A68_EXT, "cgsrydberg", M_REAL, genie_cgs_rydberg);
435 a68_idf (A68_EXT, "cgsboltzmann", M_REAL, genie_cgs_boltzmann);
436 a68_idf (A68_EXT, "cgsbohrmagneton", M_REAL, genie_cgs_bohr_magneton);
437 a68_idf (A68_EXT, "cgsnuclearmagneton", M_REAL, genie_cgs_nuclear_magneton);
438 a68_idf (A68_EXT, "cgselectronmagneticmoment", M_REAL, genie_cgs_electron_magnetic_moment);
439 a68_idf (A68_EXT, "cgsprotonmagneticmoment", M_REAL, genie_cgs_proton_magnetic_moment);
440 a68_idf (A68_EXT, "cgsmolargas", M_REAL, genie_cgs_molar_gas);
441 a68_idf (A68_EXT, "cgsstandardgasvolume", M_REAL, genie_cgs_standard_gas_volume);
442 a68_idf (A68_EXT, "cgsminute", M_REAL, genie_cgs_minute);
443 a68_idf (A68_EXT, "cgshour", M_REAL, genie_cgs_hour);
444 a68_idf (A68_EXT, "cgsday", M_REAL, genie_cgs_day);
445 a68_idf (A68_EXT, "cgsweek", M_REAL, genie_cgs_week);
446 a68_idf (A68_EXT, "cgsinch", M_REAL, genie_cgs_inch);
447 a68_idf (A68_EXT, "cgsfoot", M_REAL, genie_cgs_foot);
448 a68_idf (A68_EXT, "cgsyard", M_REAL, genie_cgs_yard);
449 a68_idf (A68_EXT, "cgsmile", M_REAL, genie_cgs_mile);
450 a68_idf (A68_EXT, "cgsnauticalmile", M_REAL, genie_cgs_nautical_mile);
451 a68_idf (A68_EXT, "cgsfathom", M_REAL, genie_cgs_fathom);
452 a68_idf (A68_EXT, "cgsmil", M_REAL, genie_cgs_mil);
453 a68_idf (A68_EXT, "cgspoint", M_REAL, genie_cgs_point);
454 a68_idf (A68_EXT, "cgstexpoint", M_REAL, genie_cgs_texpoint);
455 a68_idf (A68_EXT, "cgsmicron", M_REAL, genie_cgs_micron);
456 a68_idf (A68_EXT, "cgsangstrom", M_REAL, genie_cgs_angstrom);
457 a68_idf (A68_EXT, "cgshectare", M_REAL, genie_cgs_hectare);
458 a68_idf (A68_EXT, "cgsacre", M_REAL, genie_cgs_acre);
459 a68_idf (A68_EXT, "cgsbarn", M_REAL, genie_cgs_barn);
460 a68_idf (A68_EXT, "cgsliter", M_REAL, genie_cgs_liter);
461 a68_idf (A68_EXT, "cgsusgallon", M_REAL, genie_cgs_us_gallon);
462 a68_idf (A68_EXT, "cgsquart", M_REAL, genie_cgs_quart);
463 a68_idf (A68_EXT, "cgspint", M_REAL, genie_cgs_pint);
464 a68_idf (A68_EXT, "cgscup", M_REAL, genie_cgs_cup);
465 a68_idf (A68_EXT, "cgsfluidounce", M_REAL, genie_cgs_fluid_ounce);
466 a68_idf (A68_EXT, "cgstablespoon", M_REAL, genie_cgs_tablespoon);
467 a68_idf (A68_EXT, "cgsteaspoon", M_REAL, genie_cgs_teaspoon);
468 a68_idf (A68_EXT, "cgscanadiangallon", M_REAL, genie_cgs_canadian_gallon);
469 a68_idf (A68_EXT, "cgsukgallon", M_REAL, genie_cgs_uk_gallon);
470 a68_idf (A68_EXT, "cgsmilesperhour", M_REAL, genie_cgs_miles_per_hour);
471 a68_idf (A68_EXT, "cgskilometersperhour", M_REAL, genie_cgs_kilometers_per_hour);
472 a68_idf (A68_EXT, "cgsknot", M_REAL, genie_cgs_knot);
473 a68_idf (A68_EXT, "cgspoundmass", M_REAL, genie_cgs_pound_mass);
474 a68_idf (A68_EXT, "cgsouncemass", M_REAL, genie_cgs_ounce_mass);
475 a68_idf (A68_EXT, "cgston", M_REAL, genie_cgs_ton);
476 a68_idf (A68_EXT, "cgsmetricton", M_REAL, genie_cgs_metric_ton);
477 a68_idf (A68_EXT, "cgsukton", M_REAL, genie_cgs_uk_ton);
478 a68_idf (A68_EXT, "cgstroyounce", M_REAL, genie_cgs_troy_ounce);
479 a68_idf (A68_EXT, "cgscarat", M_REAL, genie_cgs_carat);
480 a68_idf (A68_EXT, "cgsunifiedatomicmass", M_REAL, genie_cgs_unified_atomic_mass);
481 a68_idf (A68_EXT, "cgsgramforce", M_REAL, genie_cgs_gram_force);
482 a68_idf (A68_EXT, "cgspoundforce", M_REAL, genie_cgs_pound_force);
483 a68_idf (A68_EXT, "cgskilopoundforce", M_REAL, genie_cgs_kilopound_force);
484 a68_idf (A68_EXT, "cgspoundal", M_REAL, genie_cgs_poundal);
485 a68_idf (A68_EXT, "cgscalorie", M_REAL, genie_cgs_calorie);
486 a68_idf (A68_EXT, "cgsbtu", M_REAL, genie_cgs_btu);
487 a68_idf (A68_EXT, "cgstherm", M_REAL, genie_cgs_therm);
488 a68_idf (A68_EXT, "cgshorsepower", M_REAL, genie_cgs_horsepower);
489 a68_idf (A68_EXT, "cgsbar", M_REAL, genie_cgs_bar);
490 a68_idf (A68_EXT, "cgsstdatmosphere", M_REAL, genie_cgs_std_atmosphere);
491 a68_idf (A68_EXT, "cgstorr", M_REAL, genie_cgs_torr);
492 a68_idf (A68_EXT, "cgsmeterofmercury", M_REAL, genie_cgs_meter_of_mercury);
493 a68_idf (A68_EXT, "cgsinchofmercury", M_REAL, genie_cgs_inch_of_mercury);
494 a68_idf (A68_EXT, "cgsinchofwater", M_REAL, genie_cgs_inch_of_water);
495 a68_idf (A68_EXT, "cgspsi", M_REAL, genie_cgs_psi);
496 a68_idf (A68_EXT, "cgspoise", M_REAL, genie_cgs_poise);
497 a68_idf (A68_EXT, "cgsstokes", M_REAL, genie_cgs_stokes);
498 a68_idf (A68_EXT, "cgsfaraday", M_REAL, genie_cgs_faraday);
499 a68_idf (A68_EXT, "cgselectroncharge", M_REAL, genie_cgs_electron_charge);
500 a68_idf (A68_EXT, "cgsgauss", M_REAL, genie_cgs_gauss);
501 a68_idf (A68_EXT, "cgsstilb", M_REAL, genie_cgs_stilb);
502 a68_idf (A68_EXT, "cgslumen", M_REAL, genie_cgs_lumen);
503 a68_idf (A68_EXT, "cgslux", M_REAL, genie_cgs_lux);
504 a68_idf (A68_EXT, "cgsphot", M_REAL, genie_cgs_phot);
505 a68_idf (A68_EXT, "cgsfootcandle", M_REAL, genie_cgs_footcandle);
506 a68_idf (A68_EXT, "cgslambert", M_REAL, genie_cgs_lambert);
507 a68_idf (A68_EXT, "cgsfootlambert", M_REAL, genie_cgs_footlambert);
508 a68_idf (A68_EXT, "cgscurie", M_REAL, genie_cgs_curie);
509 a68_idf (A68_EXT, "cgsroentgen", M_REAL, genie_cgs_roentgen);
510 a68_idf (A68_EXT, "cgsrad", M_REAL, genie_cgs_rad);
511 a68_idf (A68_EXT, "cgssolarmass", M_REAL, genie_cgs_solar_mass);
512 a68_idf (A68_EXT, "cgsbohrradius", M_REAL, genie_cgs_bohr_radius);
513 a68_idf (A68_EXT, "cgsnewton", M_REAL, genie_cgs_newton);
514 a68_idf (A68_EXT, "cgsdyne", M_REAL, genie_cgs_dyne);
515 a68_idf (A68_EXT, "cgsjoule", M_REAL, genie_cgs_joule);
516 a68_idf (A68_EXT, "cgserg", M_REAL, genie_cgs_erg);
517 a68_idf (A68_EXT, "mksaspeedoflight", M_REAL, genie_mks_speed_of_light);
518 a68_idf (A68_EXT, "mksagravitationalconstant", M_REAL, genie_mks_gravitational_constant);
519 a68_idf (A68_EXT, "mksaplanckconstant", M_REAL, genie_mks_planck_constant_h);
520 a68_idf (A68_EXT, "mksaplanckconstantbar", M_REAL, genie_mks_planck_constant_hbar);
521 a68_idf (A68_EXT, "mksavacuumpermeability", M_REAL, genie_mks_vacuum_permeability);
522 a68_idf (A68_EXT, "mksaastronomicalunit", M_REAL, genie_mks_astronomical_unit);
523 a68_idf (A68_EXT, "mksalightyear", M_REAL, genie_mks_light_year);
524 a68_idf (A68_EXT, "mksaparsec", M_REAL, genie_mks_parsec);
525 a68_idf (A68_EXT, "mksagravaccel", M_REAL, genie_mks_grav_accel);
526 a68_idf (A68_EXT, "mksaelectronvolt", M_REAL, genie_mks_electron_volt);
527 a68_idf (A68_EXT, "mksamasselectron", M_REAL, genie_mks_mass_electron);
528 a68_idf (A68_EXT, "mksamassmuon", M_REAL, genie_mks_mass_muon);
529 a68_idf (A68_EXT, "mksamassproton", M_REAL, genie_mks_mass_proton);
530 a68_idf (A68_EXT, "mksamassneutron", M_REAL, genie_mks_mass_neutron);
531 a68_idf (A68_EXT, "mksarydberg", M_REAL, genie_mks_rydberg);
532 a68_idf (A68_EXT, "mksaboltzmann", M_REAL, genie_mks_boltzmann);
533 a68_idf (A68_EXT, "mksabohrmagneton", M_REAL, genie_mks_bohr_magneton);
534 a68_idf (A68_EXT, "mksanuclearmagneton", M_REAL, genie_mks_nuclear_magneton);
535 a68_idf (A68_EXT, "mksaelectronmagneticmoment", M_REAL, genie_mks_electron_magnetic_moment);
536 a68_idf (A68_EXT, "mksaprotonmagneticmoment", M_REAL, genie_mks_proton_magnetic_moment);
537 a68_idf (A68_EXT, "mksamolargas", M_REAL, genie_mks_molar_gas);
538 a68_idf (A68_EXT, "mksastandardgasvolume", M_REAL, genie_mks_standard_gas_volume);
539 a68_idf (A68_EXT, "mksaminute", M_REAL, genie_mks_minute);
540 a68_idf (A68_EXT, "mksahour", M_REAL, genie_mks_hour);
541 a68_idf (A68_EXT, "mksaday", M_REAL, genie_mks_day);
542 a68_idf (A68_EXT, "mksaweek", M_REAL, genie_mks_week);
543 a68_idf (A68_EXT, "mksainch", M_REAL, genie_mks_inch);
544 a68_idf (A68_EXT, "mksafoot", M_REAL, genie_mks_foot);
545 a68_idf (A68_EXT, "mksayard", M_REAL, genie_mks_yard);
546 a68_idf (A68_EXT, "mksamile", M_REAL, genie_mks_mile);
547 a68_idf (A68_EXT, "mksanauticalmile", M_REAL, genie_mks_nautical_mile);
548 a68_idf (A68_EXT, "mksafathom", M_REAL, genie_mks_fathom);
549 a68_idf (A68_EXT, "mksamil", M_REAL, genie_mks_mil);
550 a68_idf (A68_EXT, "mksapoint", M_REAL, genie_mks_point);
551 a68_idf (A68_EXT, "mksatexpoint", M_REAL, genie_mks_texpoint);
552 a68_idf (A68_EXT, "mksamicron", M_REAL, genie_mks_micron);
553 a68_idf (A68_EXT, "mksaangstrom", M_REAL, genie_mks_angstrom);
554 a68_idf (A68_EXT, "mksahectare", M_REAL, genie_mks_hectare);
555 a68_idf (A68_EXT, "mksaacre", M_REAL, genie_mks_acre);
556 a68_idf (A68_EXT, "mksabarn", M_REAL, genie_mks_barn);
557 a68_idf (A68_EXT, "mksaliter", M_REAL, genie_mks_liter);
558 a68_idf (A68_EXT, "mksausgallon", M_REAL, genie_mks_us_gallon);
559 a68_idf (A68_EXT, "mksaquart", M_REAL, genie_mks_quart);
560 a68_idf (A68_EXT, "mksapint", M_REAL, genie_mks_pint);
561 a68_idf (A68_EXT, "mksacup", M_REAL, genie_mks_cup);
562 a68_idf (A68_EXT, "mksafluidounce", M_REAL, genie_mks_fluid_ounce);
563 a68_idf (A68_EXT, "mksatablespoon", M_REAL, genie_mks_tablespoon);
564 a68_idf (A68_EXT, "mksateaspoon", M_REAL, genie_mks_teaspoon);
565 a68_idf (A68_EXT, "mksacanadiangallon", M_REAL, genie_mks_canadian_gallon);
566 a68_idf (A68_EXT, "mksaukgallon", M_REAL, genie_mks_uk_gallon);
567 a68_idf (A68_EXT, "mksamilesperhour", M_REAL, genie_mks_miles_per_hour);
568 a68_idf (A68_EXT, "mksakilometersperhour", M_REAL, genie_mks_kilometers_per_hour);
569 a68_idf (A68_EXT, "mksaknot", M_REAL, genie_mks_knot);
570 a68_idf (A68_EXT, "mksapoundmass", M_REAL, genie_mks_pound_mass);
571 a68_idf (A68_EXT, "mksaouncemass", M_REAL, genie_mks_ounce_mass);
572 a68_idf (A68_EXT, "mksaton", M_REAL, genie_mks_ton);
573 a68_idf (A68_EXT, "mksametricton", M_REAL, genie_mks_metric_ton);
574 a68_idf (A68_EXT, "mksaukton", M_REAL, genie_mks_uk_ton);
575 a68_idf (A68_EXT, "mksatroyounce", M_REAL, genie_mks_troy_ounce);
576 a68_idf (A68_EXT, "mksacarat", M_REAL, genie_mks_carat);
577 a68_idf (A68_EXT, "mksaunifiedatomicmass", M_REAL, genie_mks_unified_atomic_mass);
578 a68_idf (A68_EXT, "mksagramforce", M_REAL, genie_mks_gram_force);
579 a68_idf (A68_EXT, "mksapoundforce", M_REAL, genie_mks_pound_force);
580 a68_idf (A68_EXT, "mksakilopoundforce", M_REAL, genie_mks_kilopound_force);
581 a68_idf (A68_EXT, "mksapoundal", M_REAL, genie_mks_poundal);
582 a68_idf (A68_EXT, "mksacalorie", M_REAL, genie_mks_calorie);
583 a68_idf (A68_EXT, "mksabtu", M_REAL, genie_mks_btu);
584 a68_idf (A68_EXT, "mksatherm", M_REAL, genie_mks_therm);
585 a68_idf (A68_EXT, "mksahorsepower", M_REAL, genie_mks_horsepower);
586 a68_idf (A68_EXT, "mksabar", M_REAL, genie_mks_bar);
587 a68_idf (A68_EXT, "mksastdatmosphere", M_REAL, genie_mks_std_atmosphere);
588 a68_idf (A68_EXT, "mksatorr", M_REAL, genie_mks_torr);
589 a68_idf (A68_EXT, "mksameterofmercury", M_REAL, genie_mks_meter_of_mercury);
590 a68_idf (A68_EXT, "mksainchofmercury", M_REAL, genie_mks_inch_of_mercury);
591 a68_idf (A68_EXT, "mksainchofwater", M_REAL, genie_mks_inch_of_water);
592 a68_idf (A68_EXT, "mksapsi", M_REAL, genie_mks_psi);
593 a68_idf (A68_EXT, "mksapoise", M_REAL, genie_mks_poise);
594 a68_idf (A68_EXT, "mksastokes", M_REAL, genie_mks_stokes);
595 a68_idf (A68_EXT, "mksafaraday", M_REAL, genie_mks_faraday);
596 a68_idf (A68_EXT, "mksaelectroncharge", M_REAL, genie_mks_electron_charge);
597 a68_idf (A68_EXT, "mksagauss", M_REAL, genie_mks_gauss);
598 a68_idf (A68_EXT, "mksastilb", M_REAL, genie_mks_stilb);
599 a68_idf (A68_EXT, "mksalumen", M_REAL, genie_mks_lumen);
600 a68_idf (A68_EXT, "mksalux", M_REAL, genie_mks_lux);
601 a68_idf (A68_EXT, "mksaphot", M_REAL, genie_mks_phot);
602 a68_idf (A68_EXT, "mksafootcandle", M_REAL, genie_mks_footcandle);
603 a68_idf (A68_EXT, "mksalambert", M_REAL, genie_mks_lambert);
604 a68_idf (A68_EXT, "mksafootlambert", M_REAL, genie_mks_footlambert);
605 a68_idf (A68_EXT, "mksacurie", M_REAL, genie_mks_curie);
606 a68_idf (A68_EXT, "mksaroentgen", M_REAL, genie_mks_roentgen);
607 a68_idf (A68_EXT, "mksarad", M_REAL, genie_mks_rad);
608 a68_idf (A68_EXT, "mksasolarmass", M_REAL, genie_mks_solar_mass);
609 a68_idf (A68_EXT, "mksabohrradius", M_REAL, genie_mks_bohr_radius);
610 a68_idf (A68_EXT, "mksavacuumpermittivity", M_REAL, genie_mks_vacuum_permittivity);
611 a68_idf (A68_EXT, "mksanewton", M_REAL, genie_mks_newton);
612 a68_idf (A68_EXT, "mksadyne", M_REAL, genie_mks_dyne);
613 a68_idf (A68_EXT, "mksajoule", M_REAL, genie_mks_joule);
614 a68_idf (A68_EXT, "mksaerg", M_REAL, genie_mks_erg);
615 a68_idf (A68_EXT, "numfinestructure", M_REAL, genie_num_fine_structure);
616 a68_idf (A68_EXT, "numavogadro", M_REAL, genie_num_avogadro);
617 a68_idf (A68_EXT, "numyotta", M_REAL, genie_num_yotta);
618 a68_idf (A68_EXT, "numzetta", M_REAL, genie_num_zetta);
619 a68_idf (A68_EXT, "numexa", M_REAL, genie_num_exa);
620 a68_idf (A68_EXT, "numpeta", M_REAL, genie_num_peta);
621 a68_idf (A68_EXT, "numtera", M_REAL, genie_num_tera);
622 a68_idf (A68_EXT, "numgiga", M_REAL, genie_num_giga);
623 a68_idf (A68_EXT, "nummega", M_REAL, genie_num_mega);
624 a68_idf (A68_EXT, "numkilo", M_REAL, genie_num_kilo);
625 a68_idf (A68_EXT, "nummilli", M_REAL, genie_num_milli);
626 a68_idf (A68_EXT, "nummicro", M_REAL, genie_num_micro);
627 a68_idf (A68_EXT, "numnano", M_REAL, genie_num_nano);
628 a68_idf (A68_EXT, "numpico", M_REAL, genie_num_pico);
629 a68_idf (A68_EXT, "numfemto", M_REAL, genie_num_femto);
630 a68_idf (A68_EXT, "numatto", M_REAL, genie_num_atto);
631 a68_idf (A68_EXT, "numzepto", M_REAL, genie_num_zepto);
632 a68_idf (A68_EXT, "numyocto", M_REAL, genie_num_yocto);
633 }
634
635 void stand_gsl_fft_laplace (void)
636 {
637 // FFT.
638 MOID_T *m = a68_proc (M_ROW_INT, M_INT, NO_MOID);
639 a68_idf (A68_EXT, "primefactors", m, genie_prime_factors);
640 m = a68_proc (M_ROW_COMPLEX, M_ROW_COMPLEX, NO_MOID);
641 a68_idf (A68_EXT, "fftcomplexforward", m, genie_fft_complex_forward);
642 a68_idf (A68_EXT, "fftcomplexbackward", m, genie_fft_complex_backward);
643 a68_idf (A68_EXT, "fftcomplexinverse", m, genie_fft_complex_inverse);
644 m = a68_proc (M_ROW_COMPLEX, M_ROW_REAL, NO_MOID);
645 a68_idf (A68_EXT, "fftforward", m, genie_fft_forward);
646 m = a68_proc (M_ROW_REAL, M_ROW_COMPLEX, NO_MOID);
647 a68_idf (A68_EXT, "fftbackward", m, genie_fft_backward);
648 a68_idf (A68_EXT, "fftinverse", m, genie_fft_inverse);
649 // Laplace.
650 m = a68_proc (M_REAL, A68_MCACHE (proc_real_real), M_REAL, M_REF_REAL, NO_MOID);
651 a68_idf (A68_EXT, "laplace", m, genie_laplace);
652 }
653
654 void stand_gsl (void)
655 {
656 stand_gsl_sf ();
657 stand_gsl_linear_algebra ();
658 stand_gsl_constants ();
659 stand_gsl_fft_laplace ();
660 }
661
662 #endif
© 2002-2024 J.M. van der Veer (jmvdveer@xs4all.nl)
|