Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

  • 3b39204
  • /
  • README.md
Raw File Download

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
content badge
swh:1:cnt:194eaa7da00decbf198ee01b285e34ed78527822
directory badge
swh:1:dir:3b39204bd87ad3c32fc3d87aa8062a292904c228

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
README.md
# Package PRACMA

## Introduction

This package provides R implementations of more advanced functions in
numerical analysis, with a special view on on optimization and time
series routines. Uses Matlab/Octave function names where appropriate
to simplify porting.

Some of these implementations are the result of courses on Scientific
Computing (``Wissenschaftliches Rechnen'') and are mostly intended to
demonstrate how to implement certain algorithms in R/S. Others are
implementations of algorithms found in textbooks.

## Details

The package encompasses functions from all areas of numerical analysis,
for example:

* Root finding and minimization of univariate functions,  
  e.g. Newton-Raphson, Brent-Dekker, Fibonacci or `golden ratio' search.
* Handling polynomials, including roots and polynomial fitting,  
  e.g. Laguerre's and Muller's methods.
* Interpolation and function approximation,  
  barycentric Lagrange interpolation, Pade and rational interpolation,
  Chebyshev or trigonometric approximation.
* Some special functions,  
  e.g. Fresnel integrals, Riemann's Zeta or the complex Gamma function,
  and Lambert's W computed iteratively through Newton's method.
* Special matrices, e.g. Hankel, Rosser, Wilkinson
* Numerical differentiation and integration,  
  Richardson approach and ``complex step'' derivatives, adaptive
  Simpson and Lobatto integration and adaptive Gauss-Kronrod quadrature.
* Solvers for ordinary differential equations and systems,  
  Euler-Heun, classical Runge-Kutta, ode23, or predictor-corrector method 
  such as the Adams-Bashford-Moulton.
* Some functions from number theory,  
  such as primes and prime factorization, extended Euclidean algorithm.
* Sorting routines, e.g. recursive quickstep.
* Several functions for string manipulation and regular search,
  all wrapped and named similar to their Matlab analogues.

## Goals

It serves three main goals:

* Collecting R scripts that can be demonstrated in courses on
  Numerical Analysis or Scientific Computing using R/S as the chosen
  programming language.
* Wrapping functions with appropriate Matlab names to simplify
  porting programs from Matlab or Octave to R.
* Providing an environment in which R can be used as a full-blown
  numerical computing system.

Besides that, many of these functions could be called in R applications
as they do not have comparable counterparts in other R packages (at least
at this moment, as far as I know). 

All referenced books have been utilized in one way or another.
Web links have been provided where reasonable.

## Emulated MATLAB Functions

The following 220 functions are emulations of correspondingly named Matlab 
functions and bear the same signature as their Matlab cousins if possible:

    accumarray, acosd, acot, acotd, acoth, acsc, acscd, acsch, and, angle, ans,
    arrayfun, asec, asecd, asech, asind, atand, atan2d,  
    beep, bernoulli, blank, blkdiag, bsxfun,  
    cart2pol, cart2sph, cd, ceil, circshift, clear, compan, cond, conv,  
    cosd, cot, cotd, coth, cross, csc, cscd, csch, cumtrapz,  
    dblquad, deblank, deconv, deg2rad, detrend, deval, disp, dot,  
    eig, eigint, ellipj, ellipke, eps, erf, erfc, erfcinv, erfcx, erfi, erfinv,  
    errorbar, expint, expm, eye, ezcontour, ezmesh, ezplot, ezpolar, ezsurf,  
    fact, fftshift, figure, findpeaks, findstr, flipdim, fliplr, flipud,  
    fminbnd, fmincon, fminsearch, fminunc, fplot, fprintf, fsolve, fzero,  
    gammainc, gcd, geomean, gmres, gradient,  
    hadamard, hankel, harmmean, hilb, histc, humps, hypot,  
    idivide, ifft, ifftshift, inpolygon, integral, integral2, integral3,  
    interp1, interp2, inv, isempty, isprime,  
    kron,  
    legendre, linprog, linspace, loglog, logm, logseq, logspace, lsqcurvefit,  
    lsqlin, lsqnonlin, lsqnonneg, lu,  
    magic, meshgrid, mkpp, mldivide, mod, mrdivide,  
    nchoosek, ndims, nextpow2, nnz, normest, nthroot, null, num2str, numel,  
    ode23, ode23s, ones, or, orth,  
    pascal, pchip, pdist, pdist2, peaks, perms, piecewise, pinv, plotyy,  
    pol2cart, polar, polyfit, polyint, polylog, polyval, pow2, ppval,  
    primes, psi, pwd,  
    quad, quad2d, quadgk, quadl, quadprog, quadv, quiver,  
    rad2deg, randi, randn, randsample, rat, rats, regexp, regexpi,  
    regexpreg, rem, repmat, roots, rosser, rot90, rref, runge,  
    sec, secd, sech, semilogx, semilogy, sinc, sind, size, sortrows, sph2cart,  
    sqrtm, squareform, std, str2num, strcat, strcmp, strcmpi,  
    strfind, strfindi, strjust, subspace,  
    tand, tic, toc, trapz, tril, trimmean, triplequad, triu,  
    vander, vectorfield, ver,  
    what, who, whos, wilkinson,  
    zeros, zeta

The following Matlab function names have been capitalized in `pracma' to
avoid shadowing functions from R base or one of its recommended packages
(on request of Bill Venables and because of Brian Ripley's CRAN policies):

    Diag, factos, finds, Fix, Imag, Lcm, Mode, Norm, nullspace (<- null),
    Poly, Rank, Real, Reshape, strRep, strTrim, Toeplitz, Trace, uniq (<- unique).

To use `ans` instead of `ans()` -- as is common practice in Matlab -- 
type (and similar for other Matlab commands):

    makeActiveBinding("ans", function() .Last.value, .GlobalEnv)
    makeActiveBinding("who", who(), .GlobalEnv)

### Note

The R package `matlab' contains some of the basic routines from Matlab,
but unfortunately not any of the higher math routines.

## References

  Abramowitz, M., and I. A. Stegun (1972). Handbook of Mathematical Functions
  (with Formulas, Graphs, and Mathematical Tables). Dover, New York.
  URL: www.math.ubc.ca/~cbm/aands/notes.htm

  Arndt, J. (2010). Matters Computational: Ideas, Algorithms, Source Code.
  Springer-Verlag, Berlin Heidelberg Dordrecht.
  FXT: a library of algorithms: <https://www.jjj.de/fxt/>.

  Cormen, Th. H., Ch. E. Leiserson, and R. L. Rivest (2009). Introduction
  to Algorithms. Third Edition, The MIT Press, Cambridge, MA.

  Encyclopedia of Mathematics (2012). Editor-in-Chief: Ulf Rehmann.
  <https://encyclopediaofmath.org/wiki/Main_Page>.

  Gautschi, W. (1997). Numerical Analysis: An Introduction.
  Birkhaeuser, Boston.

  Gentle, J. E. (2009). Computational Statistics.
  Springer Science+Business Media LCC, New York.

  Hazewinkel, M., Editor (2002). Encyclopaedia of Mathematics.
  Springer-Verlag, Berlin Heidelberg New York.

  MathWorld.com (2011).
  Wolfram MathWorld: <https://mathworld.wolfram.com/>.
  Matlab Central: <https://www.mathworks.com/matlabcentral/>.

  NIST: National Institute of Standards and Technology.
  Olver, F. W. J., et al. (2010). NIST Handbook of Mathematical Functions.
  Cambridge University Press. 
  Internet: NIST Digital Library of Mathematical Functions, 
  <https://dlmf.nist.gov/>;
  Dictionary of Algorithms and Data Structures,
  <https://www.nist.gov/>;
  Guide to Available Mathematical Software, <https://gams.nist.gov/>

  Press, W. H., S. A. Teukolsky, W. T Vetterling, and B. P. Flannery (2007).
  Numerical Recipes: The Art of Numerical Computing. Third Edition, incl.
  Numerical Recipes Software, Cambridge University Press, New York.
  URL: numerical.recipes/book/book.html

  Quarteroni, A., R. Sacco, and F. Saleri (2007). Numerical Mathematics.
  Second Edition, Springer-Verlag, Berlin Heidelberg.

  Skiena, St. S. (2008). The Algorithm Design Manual. Second Edition,
  Springer-Verlag, London. The Stony Brook Algorithm Repository:
  <https://algorist.com/algorist.html>.

  Stoer, J., and R. Bulirsch (2002). Introduction to Numerical Analysis.
  Third Edition, Springer-Verlag, New York.

  Strang, G. (2007). Computational Science and Engineering.
  Wellesley-Cambridge Press.

  Weisstein, E. W. (2003). CRC Concise Encyclopedia of Mathematics.
  Second Edition, Chapman & Hall/CRC Press.

  Zhang, S., and J. Jin (1996). Computation of Special Functions.
  John Wiley & Sons.

back to top

Software Heritage — Copyright (C) 2015–2026, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Content policy— Contact— JavaScript license information— Web API