------------------------------------------------------------------------------ pracma NEWS ------------------------------------------------------------------------------ CHANGES IN VERSION 2.2.9 (2019-12-15) o Changed URL reference of Abramowitz and Stegun (link missing). o Fixed warning with the 'try' construct in several functions using 'if(inherits(e, "try-error"))' (help from Bert Gunter). o Link to R Base HTML help page gave a warning (for Windows). CHANGES IN VERSION 2.2.8 (2019-07-09) o erfi() returns real values when the input values are all real. o hypot() allows for scalar plus numeric vector as inputs. CHANGES IN VERSION 2.2.7 (2019-05-21) o Polynomial division with polydiv(); for two plynomials polygcf() finds the greatest common factor; and rootmult() returns the multiplicity of a polynomial root (or 0). o polyroots() refines the result of roots() in case of roots with multiplicities (where roots() is quite inaccurate). CHANGES IN VERSION 2.2.6 (2019-05-02) o All polynomial functions now accept complex coefficients, esp. roots() finds roots for complex polynomials. o Fixed a bug in laguerre() for zeros of complex polynomials. 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.