------------------------------------------------------------------------------
  pracma                                                                NEWS
------------------------------------------------------------------------------


CHANGES IN VERSION 2.2.5 (2019-04-08)

    o fsolve() and broyden() are no longer applicable to univariate 
      functions (Morrison-Sherman formula not working in this case).
    o Alias cgmin() and option 'dfree=F' in fminsearch() are removed,
      both have been deprecated since half a year.

CHANGES IN VERSION 2.2.4 (2018-12-12)

    o qpsolve() minimizes quadratic forms such as 0.5*t(x)*x - d*x 
      with linear quality and inequality constraints.
    o fmincon() now has an 'augmented Lagrangian' option with a
      'variable metric' approach as inner solver.

CHANGES IN VERSION 2.2.3 (2018-12-10)

    o linearproj() linear projection onto a linear subspace, and
      affineproj() linear projection onto an affine subspace of R^n.

CHANGES IN VERSION 2.2.2 (2018-11-30)

    o Corrected "length > 1 in coercion to logical" in expm().

CHANGES IN VERSION 2.2.1 (2018-11-30)

    o fminunc() unconstrained minimization of nonlinear objective
      function, based on stripped-down 'Rvmmin' code by John Nash.
    o fmincon() minimization of nonlinear objective function with
      constraints; wraps suggested package NlcOptim with SQP method.

CHANGES IN VERSION 2.2.0 (2018-11-27)

    o Reintroduced 'nelder_mead()' and 'hooke_jeeves()'.
    o fminsearch() now calls 'Nelder-Mead' or 'Hooke-Jeeves',
      i.e., derivative-free methods only; 'dfree=F' gets deprecated.

CHANGES IN VERSION 2.1.9 (2018-11-22)

    o Renamed 'cgmin' to its original name 'fletcher_powell',
      alias 'cgmin' is deprecated since this version.
    o Removed alias 'normest2' that was anyway non-existing.

CHANGES IN VERSION 2.1.8 (2018-10-16)

    o Corrected a bug in hessenberg() reported by Ben Ubah.

CHANGES IN VERSION 2.1.7 (2018-09-24)

    o Removed the deprecated 'rortho' function, use randortho() instead.

CHANGES IN VERSION 2.1.6 (2018-08-30)

    o Si(), Ci() sine and cosine integral functions added.
    o Added dot notation for brent(), bisect(), newton(), halley() and
      ridders() -- on request of John Nash for the histRalg project.

CHANGES IN VERSION 2.1.5 (2018-08-25)

CHANGES IN VERSION 2.1.4 (2018-01-29)

    o shubert() implements one-dimensional Shubert-Piyavskii method.
    o fminsearch() and anms() stop for one-dimensional minimization.

CHANGES IN VERSION 2.1.3 (2018-01-23)

    o bsxfun() now uses sweep() for matrices in search of higher speed.
    o direct1d() removed because slow and not effective.

CHANGES IN VERSION 2.1.2 (2018-01-21)

    o poisson2disk() approximate Poisson disk distribution
    o Corrected small bug in findpeaks(), reported by Mike Badescu.

CHANGES IN VERSION 2.1.1 (2017-11-21)

    o Added a field "Authors@R" in the DESCRIPTION, deleted others.
    o Added README.md and NEWS.md (for a future Github repository).
    o Needed a new version for resubmitting (because of 'survivalsvm').

CHANGES IN VERSION 2.1.0 (2017-11-20)

    o Package 'quadprog' is now suggested, not imported; the functions 
      quadprog() and lsqlincon() work only when 'quadprog' is installed.

CHANGES IN VERSION 2.0.9 (2017-09-20)

    o Package byte-compiled on loading (Requires R version >= 3.1.0).

CHANGES IN VERSION 2.0.8 (2017-09-20)

    o findpeaks() function not checking for NAs (reported by Wesley Burr).
    o fplot() extra parameters were not handed over to plotting routine.

CHANGES IN VERSION 2.0.7 (2017-06-17)

    o bernstein() generates the Bernstein polynomial B_,_().
    o legendre(n,_) corrected for n=0 (thanks to Peter W. Marcy).
    o cgmin() alias for fletcher_powell(), a constraint gradient method.

CHANGES IN VERSION 2.0.6 (2017-06-06)

    o polyvalm() evaluates a polynomial in the matrix sense.
    o arnoldi() Arnoldi iteration (incl. Hessenberg matrix).

CHANGES IN VERSION 2.0.5 (2017-04-30)

    o integral() redesigned, less methods, several starting intervals
      with regular or random intermediate nodes (similar to MATLAB).
    o quadgr() corrected as functions vectorized with Vectorize() did
      not behave as expected with apply(); still needs vectorization.
    o Help page of quadgk() did not mention the need for vectorization.

CHANGES IN VERSION 2.0.4 (2017-04-01)

    o hessenberg() computes the Hessenberg form of a matrix through
      Householder transformations (this is named hess() in MATLAB).

CHANGES IN VERSION 2.0.3 (2017-03-23)

    o Corrected functions with conditions in control statements with
      conditions of length greater than one: rem().

CHANGES IN VERSION 2.0.2 (2017-02-23)

    o isposdef() test for positive definiteness of a (real) matrix.
    o hooke_jeeves() removed; similar implementations are available
      in packages 'dfoptim::hjk[b]' and 'adagio::hookejeeves'.

CHANGES IN VERSION 2.0.1 (2017-02-06)

    o nelder_mead() replaced by an adaptive Nelder-Mead implementation,
      anms(), following F. Gao and L. Han.
    o fminsearch() now calls this new version of Nelder-Mead.

CHANGES IN VERSION 2.0.0 (2017-01-26)

    o incgam(x,a) computes the incomplete upper gamma function using
      the R function pgamma for higher precision than gammainc().
    o Corrected a small oversight in hurstexp(), thnx George Ostrouchov.

CHANGES IN VERSION 1.9.9 (2017-01-10)

    o Slightly changed the description lines on request of CRAN.

CHANGES IN VERSION 1.9.8 (2017-01-10)

    o whittaker() finally implemented avoiding the sparse matrix package.
    o nelder_mead() now applies adaptive parameters for the simplicial
      search, depending on the dimension of the problem space.
    o psinc(x,n), the so-called periodic sinc function.

CHANGES IN VERSION 1.9.7 (2016-12-14)

    o shooting() implements the shooting method for boundary value problems
      of second order differential equations.
    o interp2() corrected the help page with size(z) = length(y)*length(x).
    o Corrected a small oversight on the help page of Gauss-Laguerre.

CHANGES IN VERSION 1.9.6 (2016-09-11)

    o haversine() Haversine formula for geographical distances on earth.
    o trigonometric functions accepting degrees instead of inputs in radians:
      sind   cosd   tand   cotd   secd   cscd
      asind  acosd  atand  acotd  asecd  acscd  atan2d

CHANGES IN VERSION 1.9.5 (2016-09-06)

    o fprintf() mimicks MATLAB's function of the same name.
    o Added ezsurf(), an easy surface plot following MATLAB.
    o fplot() is almost an alias for ezplot(); please note that in future
      versions ez...() will be renamed to f...() according MATLAB 2016/17.

CHANGES IN VERSION 1.9.4 (2016-07-27)

    o rortho() renamed to randortho(), the underlying code was buggy
      (not truely random) and has been replaced, thanks to Jan Tuitman.
    o an error in the final step of calculating approx_energy() was
      corrected, thanks to Daniel Krefl.

CHANGES IN VERSION 1.9.3 (2016-05-28)

    o bvp() now solves boundary value problems for linear 2nd order ODEs
      using a 'finite differences' approach and a tridiagonal solver.
    o polyfit2() has been removed, use polyfix() instead.

CHANGES IN VERSION 1.9.2 (2016-03-04)

    o romberg() corrected an error estimation that diminished the accuracy.
    o trapzfun() realizes trapezoidal integration with iterated calculations.

CHANGES IN VERSION 1.9.1 (2016-02-15)

    o fractalcurve() generates some fractal curves of order n, i.e. the
      Hilbert, Sierpinski, Snowflake, Dragon, and Molecule curves.
    o ode23(), ode23s() changed the size of the returned components,
      now it is similar to what is returned by ode45() and ode78().
    o arclength() corrected a boundary condition ('on the left'), added
      an example how to generate an arc-length parametrization of a curve.

CHANGES IN VERSION 1.9.0 (2015-12-17)

    o quadprog() solves quadratic programming problems (QP) with linear
      equality and inequality constraints, based on package 'quadprog'.
    o lsqlincon() solves linear least-squares problems with linear equality 
      *and* inequality constraints (as well as bound constraints).
    o pracma now imports package 'quadprog'.

CHANGES IN VERSION 1.8.9 (2015-12-05)

    o polyfix() fits a polynomial that exactly passes through given
      fixed points. polyfit2() will be deprecated in future versions.
    o Important bug fix for polyApprox() (thanks to Max Marchi).

CHANGES IN VERSION 1.8.8 (2015-10-28)

    o Option 'minpeakdistance' for function findpeaks() added
      (thanks to Razvan Chereji for providing a workable approach).

CHANGES IN VERSION 1.8.7 (2015-07-20)

    o Removed invperm().
    o 'linear' is now the default method for interp1().
    o Cases n = 0, 1 for legendre() corrected (thanks to Nuzhdin Yury).

CHANGES IN VERSION 1.8.6 (2015-07-11)

    o Removed two non-existing links pointing to Gander's pages at the ETHZ.
    o Removed a link explaining approximate entropy.

CHANGES IN VERSION 1.8.5 (2015-07-07)

    o Added 'Imports' field in description and 'import' in namespace,
      as requested for the new R development version.
    o strrep() renamed to strRep(), because of a new function in R Base.

CHANGES IN VERSION 1.8.4 (2015-06-25)

    o bernoulli() calculates the Bernoulli numbers and polynomials.
    o factorial2() the product of all even resp. odd integers below n.

CHANGES IN VERSION 1.8.3 (2015-02-08)

    o Deleted some URLs that were not working properly anymore.

CHANGES IN VERSION 1.8.2 (2015-02-07)

    o Special functions gathered under topics 'specfun' resp. 'specmat'.

CHANGES IN VERSION 1.8.1 (2015-02-06)

    o sumalt() accelerating (infinite) alternating sums.
    o Option 'fast=FALSE' in circlefit() to avoid optim().
    o Added Gauss' AGM-based computation of pi to agmean(). 

CHANGES IN VERSION 1.8.0 (2015-01-26)

    o hurstexp() amended for vectors of uneven length.

CHANGES IN VERSION 1.7.9 (2014-11-15)

    o qpspecial() special quadratic programming solver.
    o Reintroduces the 'tol' keyword in fminbnd() for compatibility.

CHANGES IN VERSION 1.7.8 (2014-11-10)

    o bulirsch_stoer() Bulirsch-Stoer method for solving
      ordinary differential equations with high accuracy.
    o midpoint() implements the midpoint rule for solving ODEs
      combined with Richardson extrapolation for high accuracy.

CHANGES IN VERSION 1.7.7 (2014-11-01)

    o lufact() LU factorization with partial pivoting;
      lusys() solves linear systems through Gaussian elimination.

CHANGES IN VERSION 1.7.6 (2014-10-30)

    o ode23s() for stiff ordinary differential equations refining
      Rosenbrock's method (supply Jacobian if available).
    o euler_heun() Euler-Heun ODE solver has been corrected.

CHANGES IN VERSION 1.7.5 (2014-10-20)

    o fminbnd() much improved implementation of Brent's method;
      added challenging example by Trefethen to the help page.
    o lambertWn() for the second (real) branch of Lambert W.
    o Function name alias cintegral() removed.

CHANGES IN VERSION 1.7.4 (2014-10-13)

    o hooke_jeeves() replaced by a much more efficient implementation
      and equipped with a special approach to bound constraints.
    o nelder_mead() replaced by a much more efficient implementation
      and utilizing a transformation to handle bound constraints;
      functions nelmin() and nelminb() are not exported anymore.

CHANGES IN VERSION 1.7.3 (2014-10-11)

    o quadinf() now uses the double exponential method with the
      tanh-sinh quadrature scheme for (semi-)infinite intervals.
    o Removed the not-exported and too slow .quadcc() function.
    o brent() alias for brentDekker(), newton() for newtonRaphson().

CHANGES IN VERSION 1.7.2 (2014-09-08)

    o pchipfun() function wrapper around pchip();
      missing error handling in pchip() was added.
    o hurst() removed, functionality merged with hurstexp().
    o Nile overflow data set 1871--1984 added as time series.

CHANGES IN VERSION 1.7.1 (2014-08-12)

    o bits() binary representation of a number as string.
    o agmean() returns AGM, no of iterations, and estimated precision.
    o trapz() tiny improvement on error handling.

CHANGES IN VERSION 1.7.0 (2014-06-30)

    o ode45() ODE solver using Dormand-Prince (4,5) coefficients.
    o ode78() ODE solver using Fehlberg (7,8) coefficients.
    o cintegral() renamed to line_integral().

CHANGES IN VERSION 1.6.9 (2014-06-14)

    o Version 1.6.8 "Failed to build" on R-Forge.
      [Maybe it's time to move pracma to a github repository.]

CHANGES IN VERSION 1.6.8 (2014-06-07)

    o nelmin() a more efficient and accurate version of Nelder-Mead.
    o nelminb() Nelder-Mead in bounded regions (applies a transformation).

CHANGES IN VERSION 1.6.7 (2014-05-23)

    o trisolve() stopping for singular tridiagonal matrices.
    o romberg() slightly improved accuracy and speed.

CHANGES IN VERSION 1.6.6 (2014-04-12)

    o Corrected rref() (as pointed out by Peter Audano).

CHANGES IN VERSION 1.6.5 (2014-02-24)

    o lsqnonneg() changed to an active-set approach.
    o bisect() trimmed bisection to return almost exact results.

CHANGES IN VERSION 1.6.4 (2014-02-05)

    o halley() Halley's variant of the Newton-Raphson method.
    o numderiv() corrected Richardson's method by breaking the loop.

CHANGES IN VERSION 1.6.3 (2014-01-25)

    o lambertWp() improved inner accuracy from 1e-12 to 1e-15.
    o complexstepJ() renamed to jacobian_csd(); introduced grad_csd().
    o hessian_csd() applies Richardson's method as the second step,
      and the same for laplacian_csd().

CHANGES IN VERSION 1.6.2 (2014-01-19)

    o Removed zeroin(); for fzero() a variation of Brent-Dekker is used,
      that applies cubic instead of quadratic interpolation.
    o Corrected an oversight in newtonRaphson().
    o brentDekker() returns a list now.

CHANGES IN VERSION 1.6.1 (2014-01-14)

    o samp_entropy() complements approx_entropy() for short time series.
    o Removed NEWS.Rd and NEWS.pdf in favour of NEWS.

CHANGES IN VERSION 1.6.0 (2013-12-06)

    o integral3() now handles functions as inner interval limits.
    o poly_crossings() calculates crossing points of two polygons.
    o erfz() complex error function vectorized (thanks to Michael Lachmann).

CHANGES IN VERSION 1.5.9 (2013-11-30)

    o muller() implements Muller's root-finding method [Mueller, 1956],
      especially suited for polynomials and complex functions.
    o Inserted a safeguard for the distmat() function to prevent different
      results on Mac OS X, (Ubuntu) Linux, and Windows operating systems.
    o Removed pltcross() and kmeanspp().

CHANGES IN VERSION 1.5.8 (2013-11-28)

    o interp1() with option method ``spline'' now computes Moler's spline
      functions, for compatibility with MATLAB (hint by Boudewijn Klijn).

CHANGES IN VERSION 1.5.7 (2013-10-11)

    o Corrected parameter 'waypoints' in cintegral().

CHANGES IN VERSION 1.5.6 (2013-09-22)

    o odregress() orthogonal distance (or: total least-squares) regression.
    o Changed maintainer name to its long form (CRAN request).

CHANGES IN VERSION 1.5.5 (2013-09-11)

    o L1linreg() L1 (a.k.a. LAD or median) linear regression.
    o geo_median() geometric median (minimizes sum of distances).

CHANGES IN VERSION 1.5.4 (2013-08-31)

    o rectint() rectangular intersection areas (MATLAB style).
    o cumtrapz() cumulative trapezoidal integration (MATLAB style).
    o Some corrections to help pages and function names.

CHANGES IN VERSION 1.5.3 (2013-08-25)

    o arclength() length of a parametrized curve in n-dimensional space,
      w/ improved convergence by applying Richardson's extrapolation method.
    o legendre() associated Legendre functions (MATLAB style).

CHANGES IN VERSION 1.5.2 (2013-08-23)

    o poly_center() calculates the center coordinates of a polygon.
    o poly_length() calculates the (euclidean) length of a polygon.
    o polyarea() corrected, returns the true, not the absolute value.

CHANGES IN VERSION 1.5.1 (2013-08-19)

    o fsolve() will use broyden() if m = n; fzsolve() the same;
      additionally, improved broyden() and gaussNewton().
    o ezplot() can draw markers on the line, with equal distances
      measured along the curve length.

CHANGES IN VERSION 1.5.0 (2013-08-08)

    o gmres() generalized minimum residual method.
    o nearest_spd() finds nearest symmetric positive-definite matrix.
    o eps() floating point relative accuracy.

CHANGES IN VERSION 1.4.9 (2013-07-16)

    o lapacian() now works in n dimensions, not only for n = 2.
    o mldivide(), mrdivide() corrected a severe typo.
    o numderiv(), numdiff() start with h = 1/2 instead of h = 1.
    o figure() platform-independent by using dev.new().

CHANGES IN VERSION 1.4.8 (2013-06-17)

    o findzeros() now finds 'quadratic' roots, too.
    o pdist2() added as an alias for distmat(),
      while pdist(X) now is distmat(X, X) (MATLAB style).

CHANGES IN VERSION 1.4.7 (2013-05-20)

    o histcc() histogram with optimized number of bins.
    o Example of correction term for the trapz() integration.

CHANGES IN VERSION 1.4.6 (2013-03-31)

    o psi() Psi polygamma function (MATLAB style).
    o rosenbrock() and rastrigin() functions removed.

CHANGES IN VERSION 1.4.5 (2013-03-21)

    o quadcc() new, iterative Clenshaw-Curtis quadrature.
    o squareform() formats distance matrix (MATLAB style).

CHANGES IN VERSION 1.4.4 (2013-03-12)

    o integral2() implements the two-dimensional numerical integration
      approach `TwoD', i.e. Gauss-Kronrod (3, 7)-points on rectangles.
    o integral3() three-dimensional integration based on integral2().
    o triplequad() 3-dim. integration based on dblquad() (MATLAB style).

CHANGES IN VERSION 1.4.3 (2013-03-10)

    o integral() combines adaptive numerical integration procedures.
    o cintegral() complex line integrals (rectangles and curves).

CHANGES IN VERSION 1.4.2 (2013-03-03)

    o linprog() linear programming solver for linear equality and
      inequality constraints.

CHANGES IN VERSION 1.4.1 (2013-02-20)

   o romberg() Romberg integration completely rewritten.
   o idivide() integer division with different roundings.

CHANGES IN VERSION 1.4.0 (2013-02-10)

    o fderiv(), taylor() expanded to higher orders.
    o itersolve() iteration methods for solving linear systems.
    o lu() LU decomposition with different schemes (w/o pivoting).

CHANGES IN VERSION 1.3.9 (2013-01-26)

    o pdist() as an alias for distmat() (MATLAB style).
    o fftshift(), ifftshift() shifting Fourier frequencies.
    o Improved grad(), jacobian(), hessian(), and laplacian().

CHANGES IN VERSION 1.3.8 (2013-01-10)

    o Smaller corrections, e.g., removed deprecated 'is.real';
      no startup messages anymore.
    o geomean(), harmmean(), trimmean() geometric, harmonic, and
      trimmed arithmetic mean (MATLAB style).
    o agmean() algebraic-geometric mean.

CHANGES IN VERSION 1.3.7 (2013-01-07)

    o mexpfit() multi-exponentiell fitting, separating linear and
      nonlinear parts of the problem.

CHANGES IN VERSION 1.3.6 (2013-01-06)

    o lsqsep() separable least-squares fitting.
    o lsqcurvefit() nonlinear least-squares curve fitting.

CHANGES IN VERSION 1.3.5 (2013-01-05)

    o cd(), pwd() directory functions (MATLAB style).
    o rand(), randn() changed to accept size() as input.
    o whos(), what() corrected for empty lists resp. directories.

CHANGES IN VERSION 1.3.4 (2012-12-19)

    o what(), who(), whos(), ver() (MATLAB style).
    o semilogx(), semilogy(), loglog() logarithmic plots (MATLAB style)

CHANGES IN VERSION 1.3.3 (2012-12-12)

    o quadv() vectorized integration.
    o ezpolar() easy access to the polar() function.
    o sortrows() sorting rows of matrices (MATLAB style).
    o null() alias for nullspace function (MATLAB style).
    o eigjacobi() Jacobi's method for eigenvalues and eigenvectors.

CHANGES IN VERSION 1.3.2 (2012-12-08)

    o ellipke(), ellipj() elliptic and Jacobi elliptic integrals.
    o expint() implements E1 and Ei, the exponential integrals, with
      aliases expint_E1() and expint_Ei().
    o li() the logarithmic integral (w/o offset).

CHANGES IN VERSION 1.3.1 (2012-12-06)

    o Explicitely listing about 200 MATLAB-emulating function( name)s.
    o Dismissed matlab(), using it now for infos only, not assigning any
      MATLAB function names to the environment (because of CRAN policies).

CHANGES IN VERSION 1.3.0 (2012-12-05)

    o cot(), csc(), sec() cotangens, cosecans, and secans functions.
    o acot(), acsc(), asec() inverse cotangens, cosecans, secans functions.
    o coth(), csch(), sech() hyperbolic cotangens, cosecans, secans functions.
    o acoth(), acsch(), asech() inverse hyperbolic cotangens, cosecans, and
      secans functions.

CHANGES IN VERSION 1.2.9 (2012-12-02)

    o bvp() changed to solve second order boundary value problems.
    o trisolve() solves tridiagonal linear equation systems.
    o curvefit() fits points in the plane with a polynomial curve.

CHANGES IN VERSION 1.2.8 (2012-11-30)

    o lsqlin() least-squares solver with linear equality constraints.
    o pinv() now works like MASS::ginv() for singular matrices.
    o Added the end-';' feature to str2num().
    o toc() added invisible return value.

CHANGES IN VERSION 1.2.7 (2012-11-22)

    o procrustes() solving the Procrustes problem,
      and kabsch() implements the Kabsch algorithm.
    o kriging() ordinary and simple Kriging interpolation.
    o Corrected some stupid errors in str2num().

CHANGES IN VERSION 1.2.6 (2012-11-11)

    o akimaInterp() univariate Akima interpolation.
    o Moved transfinite() to package 'adagio'.

CHANGES IN VERSION 1.2.5 (2012-10-28)

    o histc() Histogram-like counting (MATLAB style).
    o Added warning to complexstep() if imaginary part is zero.

CHANGES IN VERSION 1.2.4 (2012-10-25)

    o Added option 'pinv' to mldivide() to return same results as MATLAB.
    o str2num(), num2str() conversion functions (MATLAB style).
    o Removed some 'author' entries on help pages.

CHANGES IN VERSION 1.2.3 (2012-10-17)

    o Renamed mrank() to Rank().
    o Corrected nullspace() [thanks to Stephane Laurent], which now agrees
      with Octave's null() function (MASS:Null appears buggy, too).
    o Corrected gaussNewton() and fsolve() [thanks to Etienne Chamayou].

CHANGES IN VERSION 1.2.2 (2012-10-10)

    o bsxfun() apply binary function elementwise (MATLAB style).
    o added the analytic solution for the example in bvp().

CHANGES IN VERSION 1.2.1 (2012-09-28)

    o rosenbrock() added, moved testfunctions to 'adagio' package.
    o euler_heun() improved Euler method for solving ODEs.
    o logit() function added to sigmoid().
    o Keyword 'ode' introduced.

CHANGES IN VERSION 1.2.0 (2012-09-27)

    o matlab() can reinstall MATLAB function names.

CHANGES IN VERSION 1.1.9 (2012-09-25)

    o gcd(), lcm() greatest common divisor, least common multiple
      now working on a vector of integers.
    o Removed number-theoretic functions: eulersPhi(),
      moebiusFun(), mertensFun(), sigma(), tau(), omega(), Omega(),
      primes2(), twinPrimes(), nextPrime(), previousPrime(),
      modpower(), modorder(), modinv(), modlin(),
      primroot(), contfrac(), coprime(), GCD(), LCM(), extGCD(),
      (these functions are now available in the 'numbers' package).

CHANGES IN VERSION 1.1.8 (2012-09-19)

    o ezcontour(), ezmesh() wrappers for contour(), image(), persp().
    o erfi() imaginary error function.

CHANGES IN VERSION 1.1.7 (2012-08-06)

    o moler() Moler matrix

CHANGES IN VERSION 1.1.6 (2012-07-20)

    o Removed '.Rapphistory' from the tests directory (again)
      [and use "--as-cran" for the checks].
    o disp() display text or array (MATLAB Style), i.e. cat() with newline.

CHANGES IN VERSION 1.1.5 (2012-07-18)

    o Renamed functions with capital first letter to avoid name clashes:
      mtrace -> Trace, mdiag -> Diag, strtrim -> strTrim, vnorm -> Norm,
      reshape -> Reshape, find -> finds, fix -> Fix, poly ->Poly,
      mode -> Mode, real -> Real, imag -> Imag, toeplitz -> Toeplitz.

CHANGES IN VERSION 1.1.4 (2012-06-26)

    o gammainc() (lower and upper) incomplete gamma function, also the
      regularized gamma function, all allowing negative x values.
    o polylog() the polylogarithm functions for |z| < 1 and n >= -4 .

CHANGES IN VERSION 1.1.3 (2012-06-17)

    o fminsearch() now implements Nelder-Mead (similar to optim), and
      Fletcher-Powell when ``dfree=FALSE'' is chosen.
    o Test functions rosenbrock() and rastrigin().

CHANGES IN VERSION 1.1.2 (2012-06-13)

    o nelder_mead() implements Nelder-Mead for nonlinear optimization.
    o hooke-jeeves() Hooke-Jeeves algorithm for direct search.
    o fletcher_powell() Davidon-Fletcher-Powell method for function
      minimization (alternative to BFGS approach).
    o steep_descent() minimization of functions using steepest descent.

CHANGES IN VERSION 1.1.1 (2012-06-10)

    o fminbnd() now implements Brent's function minimization algorithm with
      golden section search and parabolic interpolation (same as optimize).
    o transfinite() transformation function between bounded and unbounded
      (box constraint) regions.

CHANGES IN VERSION 1.1.0 (2012-06-06)

    o hurst(), hurstexp() calculate the Hurst exponent of a time series.
    o Updated the NEWS.Rd file.

CHANGES IN VERSION 1.0.9 (2012-06-03)

    o lsqnonneg() solves nonnegative least-squares problems by using the
      trick "x --> exp(x)" and applying lsqnonlin();
      example function lsqcurvefit() for nonlinear curve fitting.
    o Renamed ridder() to ridders(), thanks to Robert Monfera for pointing
      it out (he also suggested a multi-dimensional variant).

CHANGES IN VERSION 1.0.8 (2012-05-22)

    o movavg() moving average of types "simple", "weighted", "modified",
      "exponential" (EMA), or "triangular".
    o modlin() solves modular linear equations.

CHANGES IN VERSION 1.0.7 (2012-05-11)

    o lsqnonlin() solves nonlinear least-squares problems using the
      Levenberg-Marquardt approach.
    o renamed froots() to findzeros(), and fmins() to findmins().

CHANGES IN VERSION 1.0.6 (2012-04-21)

    o fornberg() finite difference (i.e., polynomial) approximation of
      derivatives for unevenly spaced grid points -- Fornberg's method.

CHANGES IN VERSION 1.0.5 (2012-04-15)

    o randsample() randomly sampling, alias for sample (MATLAB style).
    o rands() generates uniform random points on an N-sphere.
    o Added tic(), toc() measuring elapsed time (MATLAB style).
    o previousPrime() finds the next prime below a number.

CHANGES IN VERSION 1.0.4 (2012-04-01)

    o invlap() computes the inverse Lapacian numerically.
    o ppfit() piecewise polynomial fitting procedure.

CHANGES IN VERSION 1.0.3 (2012-03-21)

    o cubicspline() interpolating cubic spline (w/ endpoint conditions).
    o mkpp() and ppval() for piecewise polynomial structures.

CHANGES IN VERSION 1.0.2 (2012-03-17)

    o accumarray() resembles the related MATLAB function more closely.
    o invperm() returns the inverse of a permutation.
    o randperm() changed to make it more MATLAB-like.

CHANGES IN VERSION 1.0.1 (2012-03-09)

    o plotyy() corrected right ordinate, prettying the labels.
    o peaks() peaks function (MATLAB style).

CHANGES IN VERSION 1.0.0 (2012-03-01)

    o Updated the NEWS.Rd file.

CHANGES IN VERSION 0.9.9 (2012-02-29)

    o qrSolve solves overdetermined system of linear equations.
    o DSCsearch() removed, now in package 'pracopt'.
    o randp() found a better, non-selective approach.

CHANGES IN VERSION 0.9.8 (2012-02-23)

    o gramSchmidt() modified Gram-Schmidt process.
    o householder() Householder reflections and QR decomposition.
    o givens() Givens rotation and QR decomposition.
    o corrected a small error in ridder() (thanks to Roger Harbord); new
      example of how to use ridder() with Rmpfr for multiple precision.

CHANGES IN VERSION 0.9.7 (2012-02-17)

    o erf() corrected, erfc() and erfcx() as new functions,
      including their inverses erfinv() and erfcinv().
    o hypot() now numerically more stable (thanks to Jerry Lewis).

CHANGES IN VERSION 0.9.6 (2012-01-25)

    o Changed third example for dblquad() [new Windows toolchain problem].
    o Deactivated the test for gammaz() because of problems on Solaris.

CHANGES IN VERSION 0.9.5 (2012-01-16)

    o kmeanspp() kmeans++ clustering algorithm.
    o hampel() with new option, fuelled by a blog entry of Ron Pearson.

CHANGES IN VERSION 0.9.4 (2012-01-08)

    o DSCsearch() Davies-Swann-Campey search in one dimension.
    o Improved modpower() through modular exponentiation.
      added lehmann_test() Lehmann's primality test as example.
    o Corrected polar() and andrewsplot().

CHANGES IN VERSION 0.9.3 (2011-12-27)

    o direct1d() one-dimensional version of the DIRECT algorithm for
      global function minimization.

CHANGES IN VERSION 0.9.2 (2011-12-26)

    o approx_entropy() approximate entropy of a time series.
    o circshift() circularly shifting arrays (MATLAB Style).

CHANGES IN VERSION 0.9.1 (2011-12-12)

    o plotyy() plots curves with y-axes on both left and right side.
    o fplot() plots components of a multivariate function.

CHANGES IN VERSION 0.9.0 (2011-12-11)

    o errorbar() routine for plotting error bars in both directions.
    o whittaker() Whittaker-Henderson smoothing  ** Not yet running** .
    o rref() reduced row echelon form.

CHANGES IN VERSION 0.8.9 (2011-12-08)

    o cutpoints() automatically finds cutting points based on gaps.
    o hausdorff_dist calculates the Hausdorff distance / Hausdorff dimension.
    o nnz() number of non-zeros elements (MATLAB style).

CHANGES IN VERSION 0.8.8 (2011-12-06)

    o polar() for polar plots (MATLAB style), see the example plots.
    o andrewsplot() plots Andrews curves in polar coordinates.
    o Vectorized: cart2sph(), sph2cart(), cart2pol(), pol2cart().

CHANGES IN VERSION 0.8.7 (2011-11-30)

    o deg2rad(), rad2deg().
    o figure() MATLAB style and pltcross() plotting crosses.

CHANGES IN VERSION 0.8.6 (2011-11-21)

    o ridder() Ridder's method for zero finding of univariate functions.

CHANGES IN VERSION 0.8.5 (2011-11-19)

    o sqrtm() matrix square root, based on Denman-Beavers iteration,
      rootm() matrix p-th root, computing a complex contour integral,
      signm() matrix sign function.
	o fzero() now uses the new zeroin() function,
	  i.e., a Brent-Dekker approach instead of refering to uniroot().
    o twinPrimes() twin primes in a given interval, and nextPrime()
      will find the next higher prime.

CHANGES IN VERSION 0.8.4 (2011-11-14)

    o Transformations between cartesian, spherical, polar and cylindrical
      coordinate systems: cart2sph(), sph2cart(), cart2pol(), pol2cart().
    o randp() uniformly random points in the unit circle.

CHANGES IN VERSION 0.8.3 (2011-11-11)

    o accumarray() grouping elements and applying a function to each group.
    o uniq() MATLAB-style 'unique' function, allsums() in the examples.
    o small correction to fsolve(), mentioned on the 'check summary' page.

CHANGES IN VERSION 0.8.2 (2011-11-04)

    o newmark() Newmark's method for solving second order differential
      equations of the form  y''(t) = f(t, y(t), y'(t)) on [t1, t2].
    o cranknic() Crank-Nicolson 'ivp' solver, combining the forward and
      backward Euler methods for ordinary differential equations.

CHANGES IN VERSION 0.8.1 (2011-10-30)

    o Corrected pinv() for (nearly) singular matrices.
    o Renamed ifactor() to factors().

CHANGES IN VERSION 0.8.0 (2011-10-27)

    o Minor corrections and improvements to the 'pracma.pdf' manual,
      incl. numdiff(), refindall(), trigApprox(), and subspace().

CHANGES IN VERSION 0.7.9 (2011-10-22)

    o spinterp() monotonic (and later on shape-preserving) interpolation
      following the approach of Delbourgo and Gregory.

CHANGES IN VERSION 0.7.8 (2011-10-17)

    o bvp() solves boundary value problems of the following kind:
      -u''(x) + c1 u'(x) + c2 u(x) = f(x) for x in [a, b].

CHANGES IN VERSION 0.7.7 (2011-10-14)

    o primes2(n1, n2) will return all prime numbers betweeen n1 and n2
      (without storing the numbers from sqrt(n2) up to n2).

CHANGES IN VERSION 0.7.6 (2011-08-05)

    o gaussNewton() for function minimization and solving systems of
      nonlinear equations. fsolve() as a wrapper for it.
    o fzsolve() for root finding of complex functions.
    o softline() Fletcher's inexact linesearch algorithm.

CHANGES IN VERSION 0.7.5 (2011-07-26)

    o Put NEWS.Rd in the /inst subdirectory (and NEWS.pdf in /doc),
      thanks to Kurt Hornik; slightly changed the version numbering.

CHANGES IN VERSION 0.7-4 (2011-07-22)

    o rortho() generate random orthogonal matrix of size n.
    o Titanium data set for testing fitting procedures.

CHANGES IN VERSION 0.7-3 (2011-07-15)

    o erf() and erfc() error and complementary error functions
      (MATLAB style) as (almost) aliases for pnorm().
    o erfz() complex error function.

CHANGES IN VERSION 0.7-2 (2011-07-11)

    o broyden() quasi-Newton root finding method for systems of nonlinear
      equations.

CHANGES IN VERSION 0.7-1 (2011-07-09)

    o cross() has been vectorized (remark on R-help).

CHANGES IN VERSION 0.7-0 (2011-07-07)

    o Sigmoid and Einstein functions.

CHANGES IN VERSION 0.6-9 (2011-07-06)

    o Runge-Kutta-Fehlberg method of order (5,4).

CHANGES IN VERSION 0.6-8 (2011-07-05)

    o triquad() Gaussian quadrature over triangles.
    o cotes() Newton-Cotes integration formulae for 2 to 8 nodes.

CHANGES IN VERSION 0.6-7 (2011-07-04)

    o lagrangeInterp(), newtonInterp() Lagrange and Newton polynomial
      interpolation, neville() Neville's methods.
    o tril(), triu() extracting triangular matrices (MATLAB style).

CHANGES IN VERSION 0.6-6 (2011-07-02)

    o charpoly() computes the characteristic polynomial, the determinant,
      and the inverse for matrices that are relativly small, applying the
      Faddejew-Leverrier method.
    o froots() to find *all* roots (also of second or higher order) of
      a univariate function in a given interval. The same with fmins()
      to find *all* minima.

CHANGES IN VERSION 0.6-5 (2011-07-01)

    o Adams-Bashford and Adams-Moulton (i.e., multi-step) methods
      for ordinary differential equations in function abm3pc().

CHANGES IN VERSION 0.6-4 (2011-06-30)

    o Changed the description to be more precise about the package.

CHANGES IN VERSION 0.6-3 (2011-06-28)

    o rationalfit() rational function approximation
    o ratinterp() rational interpolation a la Burlisch-Stoer.

CHANGES IN VERSION 0.6-2 (2011-06-26)

    o pade() Pade approximation.

CHANGES IN VERSION 0.6-1 (2011-06-25)

    o quadgk() adaptive Gauss-Kronrod quadrature.

CHANGES IN VERSION 0.6-0 (2011-06-24)

    o Added differential equation example to expm()'s help page.
    o Changed NEWS file to become simpler (no subsections).

CHANGES IN VERSION 0.5-9 (2011-06-23)

    o quadl() recursive adaptive Gauss-Lobatto quadrature.
    o simpadpt() another recursively adaptive Simpson's rule.
    o Added testing procedures for all integration routines;
      corrected, refined some of these procedures.

CHANGES IN VERSION 0.5-8 (2011-06-20)

    o quadgr() Gaussian Quadrature with Richardson extrapolation, can
      handle singularities at endpoints and (half-)infinite intervals.

CHANGES IN VERSION 0.5-7 (2011-06-18)

    o expm() for matrix exponentials.
    o clenshaw_curtis() the Clenshaw-Curtis quadrature formula.

CHANGES IN VERSION 0.5-6 (2011-06-17)

    o simpson2d() as non-adaptive 2-dimensional Simpson integration.
    o dblquad() twofold application of internal function integrate().

CHANGES IN VERSION 0.5-5 (2011-06-15)

    o gaussHermite() and gaussLaguerre() for infinite intervals.
    o Fresnel integrals fresnelS() and frenelC().

CHANGES IN VERSION 0.5-4 (2011-06-12)

    o gaussLegendre() computes coefficients for Gauss Quadrature,
      and quad2d() uses these weights for 2-dimensional integration.
    o quadinf() wrapper for integrate() on infinite intervals.

CHANGES IN VERSION 0.5-3 (2011-06-06)

    o ode23() solving first order (systems of) differential equations.
    o barylag2d() 2-dimensional barycentric Lagrange interpolation.

CHANGES IN VERSION 0.5-2 (2011-06-04)

    o interp2() for two-dimensional interpolation.
    o gradient() now works in two dimensions too.

CHANGES IN VERSION 0.5-1 (2011-06-01)

    o fzero(), fminbnd(), fminsearch(), fsolve() as aliases for
      uniroot(), optimize(), optim() with Nelder-Mead, newtonsys().

CHANGES IN VERSION 0.5-0 (2011-05-31)

    o Corrections to help pages.

CHANGES IN VERSION 0.4-9 (2011-05-30)

    o romberg() and gauss_kronrod() for numerical integration.
    o Richardson's extrapolation in numderiv(), numdiff().
    o Discrete numerical derivatives (one dimension): gradient().

CHANGES IN VERSION 0.4-8 (2011-05-28)

    o Numerical function derivatives: fderiv(), grad().
    o Specialized operators: hessian(), laplacian().
    o Application: taylor().

CHANGES IN VERSION 0.4-7 (2011-05-27)

    o plot vector fields: quiver() and vectorfield().
    o findintervals().
    o Corrections in deval(), deeve(), using findintervals().

CHANGES IN VERSION 0.4-6 (2011-05-26)

    o Laguerre's method laguerre().
    o rk4() and rk4sys() classical fourth order Runge-Kutta.
    o deval(), deeve() evaluate ODE solutions.

CHANGES IN VERSION 0.4-5 (2011-05-24)

    o Lebesgue coefficient: lebesgue().
    o poly2str() for string representation of a polynomial.

CHANGES IN VERSION 0.4-4 (2011-05-23)

    o Dirichlet's eta() and Riemann's zeta() function.
    o rmserr() different accuracy measures; std_err() standard error.

CHANGES IN VERSION 0.4-3 (2011-05-22)

    o polypow() and polytrans() for polynomials.
    o polyApprox() polynomial approximation using Chebyshev.
    o trigPoly(), trigApprox() for trigonometric regression.

CHANGES IN VERSION 0.4-2 (2011-05-17)

    o segm_intersect() and segm_distance() segment distances.
    o inpolygon().

CHANGES IN VERSION 0.4-1 (2011-05-13)

    o polyadd() polynomial addition.
    o conv() and deconv() time series (de)convolution.
    o detrend() removes (piecewise) linear trends.
    o ifft() for normalized inverse Fast Fourier Transform.

CHANGES IN VERSION 0.4-0 (2011-05-10)

    o Added tests for functions since version 0.3-7.

CHANGES IN VERSION 0.3-9 (2011-05-09)

    o and() and or().

CHANGES IN VERSION 0.3-8 (2011-05-06)

    o pchip() and option `cubic' for interp1() interpolation.
    o The complex gamma functions gammaz().
    o hadamard() and toeplitz() matrices.

CHANGES IN VERSION 0.3-7 (2011-05-04)

    o Rank of a matrix, mrank(), and nullspace() for the kernel.
    o orth(), orthogonal basis of the image space, and subspace()
      determines the angle between two subspaces.
    o normest() for estimating the (Frobenius) norm of a matrix, and
      cond() determines the condition number of a matrix.

CHANGES IN VERSION 0.3-6 (2011-04-30)

    o fact(), more accurate than the R internal function `factorial'.
    o ezplot() as an alias for curve(), but with option ``fill = TRUE''.
    o aitken() for accelerating iterations.
    o Renamed polycnv() to polymul().
    o Renamed outlierMAD() to hampel().

CHANGES IN VERSION 0.3-5 (2011-04-23)

    o Lambert W function lambertWp() for the real principal branch.
    o ``Complex Step'' derivation with complexstep() and complexstepJ().

CHANGES IN VERSION 0.3-4 (2011-04-21)

    o Barycentric Lagrange interpolation through barylag().
    o polyfit2() fits a polynomial that exactly meets one additional point.
    o Added more references to the help entry `pracma-package.Rd'.

CHANGES IN VERSION 0.3-3 (2011-04-19)

    o hornerdefl() for also returning the deflated polynomial.
    o newtonHorner() combining Newton's method and the Horner scheme
      for root finding for polynomials.
    o jacobian() computes the Jacobian of a function R^n --> R^m as simple
      numerical derivative.
    o newtonsys() applies Newton's method to functions R^n --> R^n with
      special application to root finding of complex functions.
    o newton() renamed to newtonRaphson().

CHANGES IN VERSION 0.3-2 (2011-04-17)

    o Sorting functions: bubbleSort(), insertionSort(), selectionSort(),
      shellSort(), heapSort(), mergeSort(), mergeOrdered(), quickSort(),
      quickSortx(), is.sorted(), and testSort().
    o Functions from number theory: eulersPhi(), moebiusFun() and the
      mertensFun(), sigma(), tau(), omega(), and Omega().

CHANGES IN VERSION 0.3-1 (2011-04-16)

    o Chebyshev polynomials of the first kind: chebPoly(), chebCoeff(),
      and chebApprox().

CHANGES IN VERSION 0.3-0 (2011-04-09)

    o New version of NEWS.Rd, NEWS.pdf.
    o More test functions for root finding and quadrature.

CHANGES IN VERSION 0.2-9

    o fnorm() and the Runge function runge().
    o contfrac(), rat(), and rats() for continuous fractions.
    o meshgrid() and magic().

CHANGES IN VERSION 0.2-8

    o quad() adaptive Simpson quadrature.
    o Minimum finding with fibsearch() and golden_ratio().
    o Root finding with newton(), secant(), and brentDekker().

CHANGES IN VERSION 0.2-7

    o Regular expression functions regexp(), regexpi(), regexprep() and
      refindall().

CHANGES IN VERSION 0.2-6

    o String functions blanks(), strtrim(), deblank(), strjust(), strrep().
    o interp1() one-dimensional interpolation (incl. spline)

CHANGES IN VERSION 0.2-5

    o MATLAB functions mode(), clear() and beep().

CHANGES IN VERSION 0.2-4

    o primroot() finds the smallest primitive root modulo a given n;
      needed functions are modpower() and modorder().
    o humps() and sinc(): MATLAB test functions.
    o Root finding through bisection: bisect(), regulaFalsi().
    o outlierMAD(), findpeaks(), and piecewise().
    o polycnv() for polynomial multiplication.
    o Functions extgcd(), gcd(), and lcm() have been renamed to extGCD(),
      GCD(), and LCM() respectively.

CHANGES IN VERSION 0.2-3

    o strfind(), strfindi(), and findstr().
    o circlefit() fitting a circle to plane points.
    o mldivide() and mrdivide(), emulating the MATLAB backslash operator.

CHANGES IN VERSION 0.2-2

    o vnorm() vector norm
    o Warning about a nasty "non-ASCII input" in the savgol.RD file resolved.

CHANGES IN VERSION 0.2-1 (2011-03-17)

    o horner() implementing the horner scheme for evaluating a polynomial
      and its derivative.
    o savgol() Savitzki-Golay smoothing and needed pseudoinverse pinv().

RESTARTED AS VERSION 0.2-0

  NAME CHANGE

    o Package renamed to 'pracma' to avoid name clashes with packages
      such as 'matlab' that are sticking closer to the original.
    o Added 'pracma-package' section to the manual.

CHANGES IN VERSION 0.1-9 (2011-03-13)

    o reshape(), repmat(), and blkdiag() matrix functions.
    o combs() chooses all combinations of k elements out of n, and
      randcomb() generates a random selection.
    o perms() generates all permutations, randperm() a random permutation.
    o Pascal triangle as pascal(); nchoosek() returns binomial coefficients.
    o Some string functions: strcmp(), strcmpi(), strcat().


CHANGES IN VERSION 0.1-8 (2011-03-10)

    o std() as refinement of the standard deviation function.
    o ceil() and fix() as aliases for ceiling() and trunc().
      [floor() and round() already exist in R.]
    o Modulo functions mod(), rem() and integer division idiv().
    o Integer functions related to the Euclidean algorithm:
      extgcd(), gcd(), lcm(), coprime(), and modinv().
    o distmat() and crossn(), the vector product in n-dimensional space.

CHANGES IN VERSION 0.1-7 (2011-03-08)

    o size(), numel(), ndims(), isempty(), and find().
    o eye(), ones(), zeros().
    o Functions returning random numbers: rand(), randn(), randi().
    o linspace(), logspace(), and logseq() for linearly, logarithmically,
      and exponentially spaced sequences.

CHANGES IN VERSION 0.1-6 (2011-03-06)

    o Matrix functions mdiag() and mtrace() added.
      inv() is introduced as an alias for solve() in R.
    o Generate special matrices hankel(), rosser(), and wilkinson().
      kron() is an alias for the R function kronecker().
    o Renamed factors() to ifactor() to distinguish it more clearly
      from factors as used in R.

CHANGES IN VERSION 0.1-5

    o Added function for flipping or rotating numeric and complex
      matrices: flipdim(). flipud(), fliplr(), and rot90().

CHANGES IN VERSION 0.1-4

    o Added functions for generating sequences of (log-)linearly spaced
      numeric values: linspace() and logspace().
    o Added basic complex functions real(), imag(), conj(), and angle()
      which are essentially only aliases of the R functions Re(), Im(),
      or Conj().
      angle() returns the angle of a complex number in radians. The R
      function Mod() is here only available as abs().

CHANGES IN VERSION 0.1-3 (2011-02-20)

    o Added compan() function for the `companion' matrix;
      the eig() function is an alias for the R eigen()values function.
    o Added the polynomial functions poly(), polyder(), polyfit(),
      polyint(), and polyval().
    o roots() returns real and complex roots of polynomials.
    o Simplified the trapz() function.

CHANGES IN VERSION 0.1-2

    o Added functions from number theory: primes(), isprime() and factors().
      The corresponding function for factors() in MATLAB/Octave is called
      factor(), but that name should not be shadowed in R!
    o Added the polyarea() and trapz() functions.

CHANGES IN VERSION 0.1-1

    o Added some simple functions such as nthroot(), pow2(), and nextpow2().
    o dot() and cross() functions for scalar and vector product.
    o Generate matrices through vander() and hilb().

INITIAL VERSION 0.1-0

  INSTALLATION

    o 'pracma' will be a pure R package without using any source code.
      Therefore, installation will be immediate on all platforms.

  INTENTION

    o This package provides R implementations of more advanced math
      functions from MATLAB and Octave (and the Euler Math Toolbox)
      with a special view on optimization and time series routines.
