Tools to Deal with Fuzzy Numbers

S4 classes and methods to deal with fuzzy numbers. They allow for computing any arithmetic operations (e.g., by using the Zadeh extension principle), performing approximation of arbitrary fuzzy numbers by trapezoidal and piecewise linear ones, preparing plots for publications, computing possibility and necessity values for comparisons, etc.


               ** FuzzyNumbers Package NEWS **

0.4-6 /2019-02-05/

  • [BUGFIX] #15 as.PiecewiseLinearFuzzyNumber used to truncate the upper knots.

0.4-5 /2019-01-15/

  • [BUGFIX] #14 as.PiecewiseLinearFuzzyNumber used to fail for some TriangularFuzzyNumbers
  • updated manual & package metadata

0.4-2 /2018-02-13/

  • updated manual & package metadata

0.4-1 /2015-02-26/

  • added possibility and necessity functions that represent comparison operators <=,<,>,>= (with tests and description in vignette)

  • added functions to determine minimum and maximum of two fuzzy numbers (description in vignette)

  • added operator ^ for calculation of integer power of PiecewiseLinearFuzzyNumber

  • added function arctan2 for calculation of atan2 with PiecewiseLinearFuzzyNumber arguments

0.3-5 /2014-10-01/

  • added proper import directives in NAMESPACE

  • piecewiseLinearApproximation: method="ApproximateNearestEuclidean" no longer accepted; use "NearestEuclidean" instead.

  • package vignette now in the vignettes/ directory.

0.3-3 /2014-01-03/

  • piecewiseLinearApproximation() now supports new method="SupportCorePreserving", see Coroianu L., Gagolewski M., Grzegorzewski P., Adabitabar Firozja M., Houlari T., Piecewise Linear Approximation of Fuzzy Numbers Preserving the Support and Core, 2014 (submitted for publication).

  • piecewiseLinearApproximation() now does not fail on exceptions thrown by integrate(); fallback=Newton-Cotes formula.

  • Removed Suggests dependency: testthat tests now available for developers via the FuzzyNumbers github repository.

  • Package manual has been corrected and extended.

  • Package vignette is now only available online at

0.3-1 /2013-06-23/

  • piecewiseLinearApproximation() - general case (any knot.n) for method="NearestEuclidean" now available. Thus, method="ApproximateNearestEuclidean" is now deprecated.

  • New binary arithmetic operators, especially for PiecewiseLinearFuzzyNumbers: +, -, *, /

  • New method: fapply() - applies a function on a PLFN using the extension principle

  • New methods: as.character(); also used by show(). This function also allows to generate LaTeX code defining the FN (toLaTeX arg thanks to Jan Caha).

  • as.FuzzyNumber(), as.TriangularFuzzyNumber(), as.PowerFuzzyNumber(), and as.PiecewiseLinearFuzzyNumber() are now S4 methods, and can be called on objects of type numeric, as well as on various FNs

  • piecewiseLinearApproximation() and as.PiecewiseLinearFuzzyNumber() argument knot.alpha now defaults to equally distributed knots (via given knot.n). If knot.n is missing, then it is guessed from knot.alpha.

  • PiecewiseLinearFuzzyNumber() now accepts missing a1, a2, a3, a4, and knot.left, knot.right of length knot.n+2. Moreover, if knot.n is not given, then it is guessed from length(knot.left). If knot.alpha is missing, then the knots will be equally distributed on the interval [0,1].

  • alphacut() now always returns a named two-column matrix. evaluate() returns a named vector.

  • New function: TriangularFuzzyNumber - returns a TrapezoidalFuzzyNumber.

  • Function renamed: convert.side to convertSide, convert.alpha to convertAlpha, approx.invert to approxInvert

  • Added a call to setGeneric("plot", function(x, y, ...) ... to avoid a warning on install

  • The FuzzyNumbers Tutorial has been properly included as the package's vignette

  • DiscontinuousFuzzyNumber class has been marked as EXPERIMENTAL in the manual

  • Man pages extensively updated

  • FuzzyNumbers devel repo moved to GitHub

0.2-1 /2012-12-27/

  • approx.invert(): a new function to find the numerical inverse of a given side/alpha-cut generating function (by default via Hermite monotonic spline interpolation)

  • convert.side(), convert.alpha(): new functions to convert sides and alpha cuts to side generating funs and alpha cut generators

  • FuzzyNumber class validity check for lower, upper, left, right:

    • checks whether each function is properly vectorized and gives numeric results
    • does not check for the number of formal arguments, but just uses the first from the list
  • Suggests testthat

  • Each object has been documented

  • First CRAN release

0.1-1 /2012-07-01/

  • Initial release

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.4-6 by Marek Gagolewski, 2 years ago

Report a bug at

Browse source code at

Authors: Marek Gagolewski [aut, cre] , Jan Caha [ctb]

Documentation:   PDF Manual  

LGPL (>= 3) license

Depends on methods, grDevices, graphics, stats

Suggests knitr, digest

Imported by EM.Fuzzy, FPV, Fuzzy.p.value, FuzzyLP, FuzzyNumbers.Ext.2, FuzzyStatProb, Sim.PLFN.

Depended on by FuzzySTs.

Suggested by fuzzyreg.

See at CRAN