- Class akima_interp
- It appears that the interp() function below searches for indices slightly differently than the original GSL eval() function. This should be checked, as it might be slightly non-optimal in terms of speed (shouldn't matter for the accuracy).
- Class anneal_mt
- There may be a good way to remove the function indirection here to make this class a bit faster.
- Class array_alloc
- Might it be possible to rework this so that it does range checking and ensures that the user doesn't try to allocate more or less space? I.e. array_alloc<double[2]> complains if you try an allocate(x,3)?
- Class array_const_subvector
- Make the member data truly const and remove the extra typecast.
- Class base_interp
- These might work for decreasing functions by just replacing calls to vector_bsearch_inc() with vector_bsearch_dec(). If this is the case, then this should be rewritten accordingly. (I think I might have removed the acceleration)
- Class bin_size
- Finish this.
- Class cern_adapt
- Allow user to set the initial segments?
- It might be interesting to directly compare the performance of this class to gsl_inte_qag .
- Class cern_deriv
- All of the coefficients appear to be fractions which could be replaced with exact representation.
- Class cern_gauss
- Allow user to change
cst
?
- Global cern_gauss::integ (func_t &func, double a, double b, param_t &pa)
- Modify this to include iteration count information as done in cern_cauchy
- Class cern_mroot
- Modify this so it handles functions which return non-zero values.
- Class cern_mroot
- Move some of the memory allocation out of msolve()
- Class cern_mroot
- Give the user access to the number of function calls
- Class cern_mroot
- Rename nier6, nier7, and nier8 to something sensible.
- Class cern_mroot_root
- Double-check this class to make sure it cannot fail while returning 0 for success.
- Global cern_mroot_root::eps
- This number should probably default to one of the GSL tolerances.
- Class cli
- Warn in run_interactive() when extra parameters are given
- Class cli
- Include a "remove command" function
- Class cli
- A replace command function, there's already some code in cli.cpp for this.
- Class cli
- There's some code duplication between comm_option_run() and run_interactive()
- Class cli
- Allow the user to set the tilde string
- Global cli::cli_gets (const char *c)
- Think about whether or not this should be protected? (Possibly not, as it's extensively used by acolm.cpp)
- Class columnify
- Move the screenify() functionality from misc.h into this class?
- Class comp_gen_inte
- Provide an example of usage for this class.
- Class composite_inte
- Create a function to set an entire array of one-dimensional integration objects at once
- Class contour
- Rewrite the code which adjusts the contour levels to ensure contours don't go through the data to adjust the internal copy of the data instead.
- Class contour
- It would be nice to have a function which creates a set of closed regions to fill which represent the data. However, this likely requires a completely new algorithm, because it's not easy to simply close the contours already generated by the calc_contours() function. There are, for example, several cases which are difficult to handle, such as filling a region in between several closed contours.
- Global contour::get_data (size_t &sizex, size_t &sizey, ovector *&x_fun, ovector *&y_fun, omatrix *&udata)
- There is probably a better way than returning pointers to the internal data.
- Class contour_line
- Write an I/O object for contour lines
- Class contour_line
- Make this a subclass of contour .
- Class convert_units
- Ideally, a real C++ API for the GNU units command would be better.
- Class cspline_interp
- Could use O2scl 's native tridiagonal routines instead of calling the GSL ones.
- Class deriv
- Improve the methods for second and third derivatives
- Class edge_crossings
- Write an I/O object for edge crossings
- Class edge_crossings
- Make this a subclass of contour .
- Class eqi_deriv
- Finish the second and third derivative formulas.
- Class err_hnd_type
- There may be an issue associated with the string manipulations causing errors in the error handler.
- Class file_detect
- Allow the user to specify the compression commands in configure, or at least specify the path to gzip, bzip2, etc.
- Class file_detect
- Use the boost pipes facility instead.
- Class format_float
- Implement padding with zeros
- Class format_float
- Separate out decimal point and make it separate.
- Class gen_test_number
- Document what happens if
tot
is small
- Class gsl_anneal
- There's x0, old_x, new_x, best_x, and x? There's probably some duplication here which could be avoided.
- Class gsl_anneal
- Implement a more general simulated annealing routine which would allow the solution of discrete problems like the Traveling Salesman problem.
- Class gsl_bsimp
- Create an example with a stiff diff eq. which requires this kind of stepper
- Class gsl_bsimp
- More detailed documentation about the algorithm
- Class gsl_bsimp
- Figure out if this should be a child of odestep or adapt_step. The function step_local() is actually its own ODE stepper and could be reimplemented as an object of type odestep.
- Class gsl_bsimp
- I don't like setting yerr to GSL_POSINF, there should be a better way to force an adaptive stepper which is calling this stepper to readjust the stepsize.
- Class gsl_bsimp
- The functions deuf_kchoice() and compute_weights() can be moved out of this header file
- Class gsl_bsimp
- Rework internal arrays as uvectors?
- Class gsl_deriv
- Include the forward and backward GSL derivatives
- Global gsl_inte_kronrod::gsl_integration_qk_o2scl (func_t &func, const int n, const double xgk[], const double wg[], const double wgk[], double fv1[], double fv2[], double a, double b, double *result, double *abserr, double *resabs, double *resasc, param_t &pa)
- This function, in principle, could be replaced with a generic integration pointer.
- Class gsl_inte_qawc
- Make cern_cauchy and this class consistent in the way which they require the user to provide the denominator in the integrand
- Global gsl_inte_qng::integ_err (func_t &func, double a, double b, param_t &pa, double &res, double &err2)
- Allow user to change 0.5e28
- Class gsl_inte_singular
- Some of the functions inside this class could be moved out of header files?
- Global gsl_inte_singular::qags (func_t &func, const int qn, const double xgk[], const double wg[], const double wgk[], double fv1[], double fv2[], const double a, const double b, const double l_epsabs, const double l_epsrel, const size_t limit, double *result, double *abserr, param_t &pa)
- Remove goto statements.
- Class gsl_inte_singular::extrapolation_table
- Move this to a new class, with qelg() as a method
- Class gsl_inte_table
- Move gsl_integration_workspace to a separate class and remove this class, making all children direct descendants of gsl_inte instead. We'll have to figure out what to do with the data member
wkspace
though. Some work on this front is already in gsl_inte_qag_b.h.
- Class gsl_miser
- Rewrite the interface so that min_calls and min_calls_per_bisection are arguments to the miser_minteg_err() function. Also, allow the user to modify these values while still using the minteg() and minteg_err() functions.
- Class gsl_miser
- The testing file requires setting err_nonconv to true in the composite_inte section. Fix this.
- Global gsl_mmin_base::minimize (const gsl_vector *x, const gsl_vector *xp, double lambda, double stepa, double stepb, double stepc, double fa, double fb, double fc, double xtol, gsl_vector *x1x, gsl_vector *dx1x, gsl_vector *x2x, gsl_vector *dx2x, gsl_vector *gradient, double *xstep, double *f, double *gnorm_u)
- Remove goto statements
- Class gsl_mmin_conf
- A bit of needless copying is required in the function wrapper to convert from
gsl_vector
to the templated vector type. This can be fixed, probably by rewriting take_step to produce a vec_t &x1 rather than a gsl_vector *x1;
- Global gsl_mmin_conf::allocate (size_t n)
- Use a gsl_alloc_arrays() like function for this (but keep in mind these are calloc, not malloc statements
- Class gsl_mmin_conp
- A bit of needless copying is required in the function wrapper to convert from
gsl_vector
to the templated vector type. This can be fixed.
- Class gsl_mmin_wrapper
- There's a bit of extra vector copying here which could potentially be avoided.
- Class gsl_mroot_hybrids
- It's kind of strange that set() sets jac_given to false and set_de() has to reset it to true. Can this be simplified?
- Class gsl_mroot_hybrids
- Replace scaled_enorm() with scaled_enorm_tvec() and enorm() with enorm_tvec() everywhere, and then remove the tvec suffix.
- Class gsl_quartic_real
- Optimize value of
cube_root_tol
and compare more clearly to gsl_quartic_real2
- Class gsl_quartic_real2
- Optimize value of
cube_root_tol
and compare more clearly to gsl_quartic_real
- Class gsl_root_brent
- There is some duplication in the variables
x_lower
, x_upper
, a
, and b
, which could be removed.
- Class gsl_root_stef
- There's some extra copying here which can probably be removed.
- Class gsl_root_stef
- Compare directly to GSL.
- Class gsl_series
- Convert to a more generic vector type (This actually doesn't require much more than making a templated version of the gsl_sum_levin_u_minmax functions which accept a different type for the
array
parameter).
- Class gsl_smooth
- Generalize to generic vector types. (Does this require reworking the GSL linear fitting routines?) In the meantime, make a ovector interface.
- Class gsl_smooth
- Possibly create a new gsl_bspline class which replaces the GSL bspline workspace
- Class gsl_smooth
- Allow user to probe chi squared and the covariance?
- Class gsl_vegas
- Prettify the verbose output
- Class gsl_vegas
- Allow the user to get information about the how the sampling was done, possibly by converting the bins and boxes into a structure or class.
- Class gsl_vegas
- Allow the user to change the maximum number of bins.
- Class gsl_vegas
- The testing file requires setting err_nonconv to true in the composite_inte section. Fix this.
- Class inte
- It might be useful to have all of the integration classes report the number of function evaluations used in addition to the number of iterations which were taken
- Class lanczos
- The function eigen_tdiag() automatically sorts the eigenvalues, which may not be necessary.
- Class lanczos
- Do something better than the naive matrix-vector product?
- Class linear_solver
- The test code uses a Hilbert matrix, which is known to be ill-conditioned, especially for the larger sizes. This should probably be changed.
- Class matrix_row
- Generalize to operator(,)
- Global minimize::bracket (double &ax, double &bx, double &cx, double &fa, double &fb, double &fc, param_t &pa, func_t &func)
- Improve this algorithm with the standard golden ratio method?
- Class mroot
- Change ntrial to size_t?
- Global mroot_hybrid_state_t::allocate (size_t n)
- Convert to using gsl_alloc_arrays()
- Global mroot_hybrids_base::compute_qtf (const gsl_matrix *q, const gsl_vector *f, gsl_vector *qtf)
- This is just right-multiplication, so we could use the O2scl cblas routines instead
- Global mroot_hybrids_base::enorm (const gsl_vector *f)
- Replace this with
dnrm2
from cblas_base.h
- Class ode_bv_shoot
- Create a solution table as in ode_iv_solve
- Class ode_it_solve
- Create a GSL-like set() and iterate() interface
- Class ode_it_solve
- Implement as a child of ode_bv_solve ?
- Class ode_it_solve
- Max and average tolerance?
- Class ofvector
- Consider making allocate() and free() functions private for this class?
- Class omatrix_col_tlate
- Also do a umatrix constructor since we can't do that with uvectors
- Class ool_constr_mmin
- Implement automatic computations of gradient and Hessian
- Class ool_constr_mmin
- Construct a non-trivial example for the "examples" directory
- Class ool_constr_mmin
- Finish mmin() interface
- Class ool_mmin_pgrad
- Replace the explicit norm computation below with the more accurate dnrm2 from linalg
- Class other_todos_and_bugs
- Make sure we have a uvector_cx_alloc, ovector_cx_const_reverse, ovector_cx_const_subvector_reverse, uvector_reverse, uvector_const_reverse, uvector_subvector_reverse, uvector_const_subvector_reverse, omatrix_cx_diag, blah_const_diag, umatrix_diag, and umatrix_cx_diag
- ovector_cx_view::operator=(uvector_cx_view &) is missing
- ovector_cx::operator=(uvector_cx_view &) is missing
- uvector_c_view::operator+=(complex) is missing
- uvector_c_view::operator-=(complex) is missing
- uvector_c_view::operator*=(complex) is missing
- Class other_todos_and_bugs
- Currently, I believe the testing code requires the shared libraries and may not work if the static libraries only are installed. It would be nice to ensure the tests could be complied in either case.
- Class other_todos_and_bugs
- Consider breaking documentation up into sections?
- Class ovector_alloc
- Could (or should?) the allocate() functions be adapted to return an integer error value?
- Class ovector_const_reverse_tlate
- I think that maybe in order to ensure that this isn't created from an already reversed vector, this class has to be separated from the hierarchy altogether. However, I think this might break the smart interpolation stuff.
- Class pinside
- The inside() functions actually copy the points twice. This can be made more efficient.
- Class planar_intp
- Rewrite so that it never fails unless all the points in the data set lie on a line. This would probably demand sorting all of the points by distance from desired location.
- Class planar_intp
- Instead of comparing
den
with zero, add the option of comparing it with a small number.
- Class polylog
- Give error estimate?
- Improve accuracy?
- Use more sophisticated interpolation?
- Add the series
for
? - Implement for positive arguments < 1.0
- Make another polylog class which implements series acceleration?
- Class rnga
- Consider some analog of the GSL function
gsl_rng_uniform_pos()
, i.e. as used in the GSL Monte Carlo classes.
- Global rnga::clock_seed ()
- Figure out a better way of computing a random seed in a platform-independent way.
- Class root
- Maybe consider allowing the user to specify the stream to which 'verbose' information is sent.
- Class root_de
- At the moment, the functions solve() and solve_bkt() are not implemented for derivative solvers.
- Global search_vec::ordered_lookup (const double x0) const
- This function just uses the
find
functions and then adjusts the answer at the end if necessary. It might be possible to improve the speed by rewriting this from scratch.
- Global search_vec_ext::search_vec_ext (size_t nn, vec_t &x)
- This could be rewritten to allow vectors with only one element.
- Class simple_jacobian
- GSL-1.10 updated fdjac.c and this update could be implemented below.
- Class smart_interp
- Change the determination of the array is increasing to be a bit more intelligent.
- Class smart_interp_vec
- Properly implement handling of non-monotonic regions in the derivative functions as well as the interpolation function.
- Class table
- Rewrite the table::create_array() and table::insert_data() functions for generic vector type
- Class table
- Be more restrictive about allowable column names?
- Class table
- Re-implement user-owned columns, and handle automatic resizing appropriately.
- Class table
- Return the empty column in the operator[] functions as is done for the get_column() functions.
- Class table
- A "delete rows" method to delete a range of several rows
- Class table
- The present structure,
std::map<std::string,col,string_comp>
atree and std::vector<aiter>
alist; could be replaced with std::vector<col>
list and std::map<std::string,int>
tree where the map just stores the index of the the column in the list
- Class table3d
- Improve interpolation and derivative caching
- Class table3d
- Make a 'const' version of the interpolation functions
- Class table3d
- Write a 2d histogram functions using multiple applications of search_vec's find_interval().
- Class table_units
- Make table methods virtual? (not necessary yet since delete_column() isn't referred to internally)
- Class tensor
- Could implement arithmetic operators + and - and some different products.
- Class tensor
- Implement copies to and from vector and matrices
- Class tensor
- Implement tensor contractions, i.e. tensor = tensor * tensor
- Class tensor_grid
- Only allocate space for grid if it is set
- Class tensor_grid
- Could implement arithmetic operators + and - and some different products.
- Global tensor_grid::interpolate (double *vals)
- It should be straightforward to improve the scaling of this algorithm significantly by creating a "window" of local points around the point of interest. This could be done easily by constructing an initial subtensor.
- Global tensor_grid::set_grid (double **val)
- Define a more generic interface for matrix types
- Class test_mgr
- test_mgr::success and test_mgr::last_fail should be protected, but that breaks the operator+() function. Can this be fixed?
- Class twod_intp
- Could also include mixed second/first derivatives: deriv_xxy and deriv_xyy.
- Class twod_intp
- Implement an improved caching system in case, for example
xfirst
is true and the last interpolation used the same value of x
.
- Class uvector_const_view_tlate
- Could allow user-defined specification of restrict keyword
- Class uvector_cx_view_tlate
- Write lookup() method, and possibly an erase() method.
- File cblas_base.h
- Convert to size_t and add float and complex versions
- Global dnrm2_subcol
- Could be made more efficient with a matrix-col like object
- Global daxpy_hv_sub
- Implement explicit loop unrolling
- Global ddot_hv_sub
- Implement explicit loop unrolling
- File collection.h
- Figure out what to do with templated matrix and vector output. What might be ideal is a "vector_io" type which will input or output a generic vector of any type.
- Global matrix_out
- If all of the matrix elements are positive integers and scientific mode is not set, then we can avoid printing the extra spaces.
- File cx_arith.h
- Define operators with assignment for complex + double?
- Global O2SCL_ASSERT
- Make this consistent with assert() using NDEBUG?
- Global HH_svx
- Allow the user to pre-allocate the workspace memory
- Global LU_decomp
- The "swap rows j and i_pivot" section could probably be made more efficient using a "matrix_row"-like object as done in GSL. (7/16/09 - I've tried this, and it doesn't seem to improve the speed significantly.)
- Global LU_invert
- Could rewrite to avoid mat_col_t, (9/16/09 - However, the function may be faster if mat_col_t is left in, so it's unclear what's best.)
- Global gsl_alloc_arrays
- Fix so that __FILE__ and __LINE__ are implemented here.
- File omatrix_tlate.h
- The
xmatrix
class demonstrates how operator[] could return an ovector_array object and thus provide more bounds-checking. This would demand including a new parameter in omatrix_view_tlate which contains the vector type.
- Global operator<<
- This assumes that scientific mode is on and showpos is off. It'd be nice to fix this.
- File ovector_tlate.h
- Clean up maybe by moving, for example, ovector reverse classes to a different header file
- File ovector_tlate.h
- Define ovector_size_t classes?
- File poly.h
- The quartics are tested only for a4=1, which should probably be generalized.
- Global solve_tridiag_sym
- Convert into class for memory managment and combine with other functions below
- Global operator<<
- Make this function work even when scientific mode is not on, either by converting to scientific mode and converting back, or by leaving scientific mode off and padding with spaces
- Global operator<<
- This assumes that scientific mode is on and showpos is off. It'd be nice to fix this.
- File user_io.h
- Do input for array and 2d array objects, finish output functions. Make a macro for I/O for doubles, ints and other objects w/o a type() function.
- Global o2scl_output
- Do input for array and 2d array objects
- Global o2scl_output
- Do input for array and 2d array objects
- Global o2scl_output
- Do input for array and 2d array objects
- File vec_arith.h
- Define operators for complex vector * real matrix
- File vec_arith.h
- Define == and != for complex vectors
- File vec_arith.h
- These should be replaced by the BLAS routines where possible?
- File vec_stats.h
- Add chi squared test?
- File vec_stats.h
- Consider generalizing to other data types
- File vector.h
- Create a matrix transpose copy function?
- Global vector_cx_copy_gsl
- At present this works only with complex types based directly on the GSL complex format. This could be improved.
- Global matrix_cx_copy_gsl
- At present this works only with complex types based directly on the GSL complex format. This could be improved.
Documentation generated with Doxygen and provided under the
GNU Free Documentation License. See License Information for details.
Project hosting provided by
,
O2scl Sourceforge Project Page