Skip to content

v2.0.0

Compare
Choose a tag to compare
@rparini rparini released this 20 Aug 21:43
· 289 commits to master since this release

Breaking changes

  • Drop support for Python 2. Cxroots now requires python 3.8 or later
  • The verbose argument has been removed from some functions. It still exists for the Contour.roots method and find_roots function but it will now create a progress bar, using rich, rather than printing debugging information to the console.
  • Remove unused Contour.randomPoint method
  • All camelCase functions and arguments changed to be snake_case
  • m argument renamed to df_approx_order
  • Renames attempt_best argument to refine_roots_beyond_tol
  • Removed return_animation argument from demo_find_roots function and Contour.demo_roots method. Instead, the demo_roots_animation function or Contour.demo_roots_animation method can be used to get a animation.FuncAnimation object that would animate the rootfinding process without displaying it.
  • Renames RootResult.original_contour attribute to RootResult.contour
  • The Contour._size_plot method was renamed to Contour.size_plot and given a docstring
  • Removed Contour.approximate_roots method as it is intended for users to call Contour.roots instead
  • The count_roots, find_roots and demo_find_roots are no longer exposed directly by importing cxroots. Instead, it is intended that the contour method is used instead. For example, use Circle(0,3).find_roots(f) instead of find_roots(Circle(0,3),f)

New features

  • cxroots now logs rootfinding progress which can be accessed using the standard library's logging module. See the documentation for examples.
  • Add cxroots[plot] install option that will install dependencies for plotting contours and roots
  • Added type annotations for all public interfaces

Minor changes and fixes

  • Use Black formatting and added pre-commit hook
  • Contour arrows to are now scale-independent (#153, thanks @llohse)
  • Renamed internal files to camel_case.py
  • Warnings from scipy.integrate.quad are no longer suppressed by cxroots while calculating the bilinear product
  • Changed default absolute and relative integration tolernaces to 1.49e-08 to match scipy's defaults for scipy.integrate.quad and scipy.integrate.romberg
  • Fixed issue with newton iteration method when refine_roots_beyond_tol was True and the routine would not exit if the error of the previous and current iterations were only equal
  • The callback for the muller iteration method will now correctly be passed the value of the evaluated function for the iteration, rather than the error.
  • Fixed description of root_tol and refine_roots_beyond_tol in iterate_to_root docstring
  • Changes default root_tol to 0 for secant, newton and muller functions
  • Changes starting points for muller's method used when root refining to be complex, to guard against the iterations keeping to the real line.