- 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_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 search_vec::bsearch_inc() with search_vec::bsearch_dec(). If this is the case, then this should be rewritten accordingly. (I think I might have removed the acceleration)
- 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_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
- Include a "remove command" function
- 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, or some interface to the Boost units library would probably 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 err_base
- 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
- 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
- Some of these functions can be moved out of this header file
- Class gsl_bsimp
- Rework internal arrays as uvectors?
- Class gsl_bsimp
- The function step_local() is actually its own ODE stepper and could be reimplemented as an object of type odestep
- 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
- Class gsl_inte_qng
- Compare directly with GSL as is done in gsl_inte_qag_ts.
- 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.
- 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_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 use a more general vector
- Class gsl_vegas
- Could convert bins and boxes to a more useful structure
- Class gsl_vegas
- The testing file calls the error handler on the composite_inte section. Fix this.
- 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.
- 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?
- Global minimize_bkt::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 nonadapt_step
- Modify so that memory allocation/deallocation is only performed when necessary
- Global o2scl_hybrid_state_t::allocate (size_t n)
- Convert to using gsl_alloc_arrays()
- Class ode_bv_shoot
- Create a solution table as in ode_iv_solve
- Class ode_iv_solve
- Add error information
- Global ode_iv_solve::solve_table (double x0, double x1, double h, size_t n, vec_t &ystart, size_t &nsol, vec_t &xsol, mat_t &ysol, param_t &pa, func_t &derivs)
- Consider modifying so that this can handle tables which are too small by removing half the rows and doubling the stepsize.
- Class ofvector
- Consider making allocate() and free() functions private for this class?
- Class ool_constr_mmin
- Finish mmin() interface
- Class other_todos_and_bugs
- Fix the PNG images so that they're smaller and repair the transparency issue (probably can be done just using different arguments to 'convert' in the pngfix target)
- 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
- 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.
- Global ovector_const_view_tlate::norm () const
- Move this function outside the vector template since it doesn't really work with integers.
- 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 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, size_t n, const vec_t &x)
- This is not as efficient as it could be, as it just uses the
find_interval
functions and then adjusts the answer at the end if necessary.
- 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 tensor
- Could implement arithmetic operators + and - and some different products.
- Class tensor
- Add slicing to get ovector or omatrix objects
- 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::tensor_grid (size_t rank, size_t *dim)
- Create a "tensor_grid1" for completeness.
- 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 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 LU_invert
- could rewrite to avoid mat_col_t
- 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 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 vec_arith.h
- Define operators for complex vector * real matrix
- File vec_arith.h
- These should be replaced by the BLAS routines where possible?
- Global matrix_cx_copy_gsl
- At present this works only with complex types based directly on the GSL complex format. This could be improved.
- Global vector_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