Ideas for Future Development
Class o2scl::classical
Write a calc_density_zerot() function for completeness?
Member o2scl::classical::calc_mu (part &p, double temper)
Handle the case $ \mu/T>308 $ properly.
Class o2scl::fermion_deriv_rel

It might be worth coding up direct differentiation, or differentiating the eff results, as these may succeed more generally.

This class will have difficulty with extremely degenerate or extremely non-degnerate systems. Fix this.

Create a more intelligent method for dealing with bad initial guesses for the chemical potential in calc_density().

Class o2scl::fermion_deriv_thermo

Include explicit zero-temperature calculation, maybe by making this a child of fermion_zerot or by making a new fermion_deriv_zerot?

There is also a closed form for the derivatives of massless fermions with pairs at finite temperature in Constantiou et al. 2014 which could be implemented here.

Class o2scl::fermion_eff
Use bracketing to speed up one-dimensional root finding.
Class o2scl::fermion_eval_thermo
Create a Chebyshev approximation for inverting the the Fermi functions for massless_calc_density() functions?
Member o2scl::fermion_eval_thermo::calc_mu_deg (fermion &f, double temper, double prec=1.0e-18)
Make a function like this for dndm, dsdT, etc. for fermion_deriv .
Member o2scl::fermion_eval_thermo::calibrate (fermion &f, int verbose=0, std::string fname="")

Also calibrate massless fermions?

Convert into separate class?

Member o2scl::fermion_eval_thermo::massless_pair_density (fermion &f, double temper)
This could be improved by including more terms in the expansions.
Class o2scl::fermion_nonrel
This could be improved by performing a Chebyshev approximation (for example) to invert the density integral so that we don't need to use a solver.
Class o2scl::fermion_rel

The expressions which appear in in the integrand functions density_fun(), etc. could likely be improved, especially in the case where o2scl::part::inc_rest_mass is false. There should not be a need to check if ret is finite.

It appears this class doesn't compute the uncertainty in the chemical potential or density with calc_density(). This could be fixed.

I'd like to change the lower limit on the entropy integration, but the value in the code at the moment (stored in ll) makes bm_part2.cpp worse.

The function pair_mu() should set the antiparticle integrators as done in fermion_deriv_rel.

Member o2scl::fermion_rel::nu_from_n (fermion &f, double temper)
This function might be improved by generating a bracket for a bracketing solver, rather than o2scl::root_cern which is the default for o2scl::fermion_rel::density_root.
Member o2scl::fermion_rel::pair_fun (double x, fermion &f, double T, bool log_mode)
Particles and antiparticles have different degeneracy factors, so we separately use the expansions one at a time. It is probably better to separately generate a new expansion function which automatically handles the sum of particles and antiparticles.
Class o2scl::fermion_zerot
Use hypot() and other more accurate functions for the analytic expressions for the zero temperature integrals. [Progress has been made, but there are probably other functions which may break down for small but finite masses and temperatures]
Class o2scl::nucmass_ame

Create a caching and more intelligent search system for the table. The table is sorted by A and then N, so we could probably just copy the search routine from mnmsk_mass, which is sorted by Z and then N (some code written for this, but it doesn't work yet).

Should m_neut and m_prot be set to the neutron and proton masses from the table by default?

Class o2scl::nucmass_densmat
If this isn't going to be in a child of nucmass, then maybe we can simplify binding_energy_densmat_derivs() to just binding_energy().
Member o2scl::nucmass_densmat::binding_energy_densmat_derivs (double Z, double N, double npout, double nnout, double nneg, double T, double &E, double &dEdnp, double &dEdnn, double &dEdnneg, double &dEdT)
Extend to negative N and Z?
Class o2scl::nucmass_fit
Convert to a real fit with errors and covariance, etc.
Class o2scl::nucmass_frdm
Add microscopic part.
Class o2scl::nucmass_info
Add the full names for each element.
Member o2scl::nucmass_info::parse_elstring (std::string ela, int &Z, int &N, int &A)

Warn about malformed combinations like Carbon-5

Right now, n4 is interpreted incorrectly as Nitrogen-4, rather than the tetraneutron.

Interpret strings with the full name rather than just the abbreviation.

Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).