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

This class may need more corrections to ensure quantities like $ \sqrt{k^2+m^{*2}}-m $ are computed accurately when $ m^{*}\approx m \ll k $ .

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 Constantinou et al. 2014 which could be implemented here.

Member o2scl::fermion_deriv_thermo::calc_mu_deg (fermion_deriv &f, double temper, double prec)
There is some repetition of the code for this function and the function o2scl::fermion_eval_thermo::calc_mu_deg() . which could be avoided.
Member o2scl::fermion_deriv_thermo::calc_mu_ndeg (fermion_deriv &f, double temper, double prec, bool inc_antip=false)
There is some repetition of the code for this function and the function o2scl::fermion_eval_thermo::calc_mu_ndeg() . which could be avoided.
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, bool test_pair=false, 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).