This repository has been archived by the owner on Nov 20, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 26
/
TODO
190 lines (129 loc) · 6.79 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
Main Todo Items
===============
We are looking for volunteers to do the following tasks.
Consult the TODO files in each directory first for specific
requirements.
* 1st-line support on the mailing lists (e.g. checking that bugs are
reproducible, and that all relevant information is supplied)
* Modified Ei(x) function (see specfunc/TODO)
* Quasi-random number distributions
* ODE algorithms from RKSUITE
* Incomplete Fermi-Dirac functions
* General Legendre functions
* Spheroidal wave functions
* Weierstrass elliptic functions
* Complex Bessel Functions
* Additional volunteers with access to a good library to get copies of
papers for other developers.
* Estimates of condition numbers for linear solvers
* Sine and Cosine Transforms from FFTPACK (Alok Singhal <[email protected]>)
* Cubature, e.g as provided by Cubpack. (Gert Van den Eynde
<[email protected]> ?)
* Mathieu functions (Lowell Johnson <[email protected]>)
* Fresnel Integrals ("Juergen J. Zach" <[email protected]>)
* Cumulative Distribution functions for discrete random distributions
Changes for Release 2.0
Break binary compatibility, but keep source compatibility.
* Add a 'void *' to all workspaces, to allow for future changes.
* Disable deprecated functions
* Fix up the workspace_alloc functions so they have consistent names
(add functions where needed, don't remove)
* Standardize function names, in particular VERB vs NOUN (e.g. _invert
vs _inverse). Also adopt a convection for functions which can operate
in place vs use of workspace (e.g linalg_solve functions).
* gsl_sf_ellint_D - remove useless argument n?
Other tasks:
* Remove use of long double internally, e.g. as an accumulator in
loops. It introduces variation between platforms which is undesirable.
It should be replaced with a preprocessor variable ACC_DOUBLE so
that the user can compile the library with the old long double
behavior if desired.
* Use BLAS internally as much as possible, to take advantage of
speed improvements on large-scale systems. There may be some
instances where a simple for() loop is preferred since there's a
function-call overhead in calling BLAS routines.
* More tests. We should (at least) have a test for every error
condition. Use GCOV to improve coverage.
* Annotate the header files with GAMS classifications. See if they
can be included in the GAMs website.
* Make the return value EINVAL vs EDOM consistent for invalid
parameters. EDOM means a domain error (i.e. float or mathematically
undefined), EINVAL means invalid (i.e. zero length)
* Change return 0 to return GSL_SUCCESS, and return -1 to GSL_FAILURE
throughout, where appropriate. Similarly change any if(...) checks of
return values to use == GSL_SUCCESS, if they are checking for zero.
N.B. want to be careful about accidentally omitting error conditions
if using something like == GSL_FAILURE when function returns a
different error code.
* Make sure that all #defines are fully wrapped in ()'s, especially
the outermost layer which may have been missed. Everything should be
of the form #define foo(x) (....) so there is no possibility of bad
parsing. Need a perl script to check this!
* Eliminate use of volatile where it has been used to force rounding
(integration/). It is better to write the code to avoid dependence on
rounding.
* Constant objects (like gsl_roots_fsolver_brent) ought to have
constant pointers (const gsl_roots_fsolver_type * const
gsl_roots_fsolver_brent)
* PyGSL -- python bindings for GSL, see http://pygsl.sf.net/
* From Goose
ASCII import
Categorical Sets
Kernel Density Estimation
Shampine Polynomial Regression
Bootstrapping, Jacknife
Descriptive: Range, Trimmed Mean, Winsorized Mean, Moments
Harmonic mean, RMS, Durbin-Watson, AR1 independence
Autocorr, Autocorr_z, Cramer vos Mises, Anderson-Darling
Spearman-rho, Kendall-tau, EDF_D_both EDF_D_plus,
EDF_D_minus, EDF_D, EDF_kuiper_V, pooled mean
pooled var,
Tests: kolmogorov_smirnov
Moving average, Exponential moving average
wilcoxon_statistic, wilcoxon_noties_cdf, wilcoxon_general_cdf
Cochran Q test, KruskalWallis, McNemar, spearman_Rocc
Wishlist or vague ideas
=======================
* An example chapter on how to link GSL code with GNU Guile, and Python
We could also provide g-wrap wrappers for guile, or swig.i files and
swig demos so that swig can be run more easily.
* Provide an interface to LAPACK, as for BLAS? Clarify the license
for LAPACK first, their web page is vague on what the license terms
are. Some parts of LAPACK are included in octave so maybe the Octave
maintainers will know more.
* Public domain or free texts which could be distributed with GSL:
Abramowitz and Stegun, "Handbook of Mathematical Functions" appears to
be public domain.
SEPT/02: See online images at http://members.fortunecity.com/aands/
Devroye's book on Random Variates (1st ed) is/was in the public
domain.
* Investigate complex support in GCC: Operations like sin(z) silently
convert argument to double, losing the imaginary part. This is
mentioned in CEPHES documentation in 1998 with a patch to generate a
warning. What happened? (Does it now work with gcc-3.0?)
* Go through the matrix and vector functions systematically and decide
what should be provided outside of BLAS.
* Change from gsl-ref.texi to gsl.texi since it is the main file?
Also, put under dir section "Math" (which seems to be the appropriate
one for Debian, as Octave, Gnuplot etc are in that)
* Remove error stream stuff?? It is hardly used.
* Extend histogram routines as described in recent discussion
* Check that there are no conflicts when linking with Lapack. CBLAS, ATLAS
* Make a sorted datatype for the median and quantile functions so that
the user can be prevented from passing unsorted data, which is not
checked for.
* Optimization/error for dest == src as appropriate
* Provide a run-time expression evaluator for interactive programs
where the user can provide formulas as strings. Keith Briggs
recommended formulc2.22 which he had found useful in several projects.
http://www.cs.brandeis.edu/~hhelf/formu/formulc.html. It is LGPL.
Alternatively, the source code for GDB contains yacc grammars and
evaluators for expressions in various languages, so that would be
another way to go. It would have the advantage of following the
language standards. If I was going to write something from scratch I
would think about using that as a base, as the full set of operators
are already included with the correct precedence rules. Being able to
evaluate C and Fortran expressions could be useful.
* We should have an index mapping type object which handles elements
of size_t for vectors and matrices, or at least vectors and matrices
of size_t in addition to long, int, etc.