gives -1, 0, or 1 depending on whether x is negative, zero, or positive.


  • Mathematical function, suitable for both symbolic and numerical manipulation.
  • For nonzero complex numbers z, Sign[z] is defined as z/Abs[z].
  • Sign tries various transformations in trying to determine the sign of symbolic expressions.
  • For exact numeric quantities, Sign internally uses numerical approximations to establish its result. This process can be affected by the setting of the global variable $MaxExtraPrecision.
  • Sign can be used with Interval and CenteredInterval objects. »
  • Sign automatically threads over lists.


open allclose all

Basic Examples  (4)

Real numbers:

Complex numbers:

Plot over a subset of the reals:

Plot over a subset of the complexes:

Scope  (32)

Numerical Evaluation  (6)

Evaluate numerically:

Complex number inputs:

Evaluate to high precision:

For real inputs, the result is exact:

For complex inputs, the precision of the output tracks the precision of the input:

Evaluate efficiently at high precision:

Sign threads elementwise over lists and matrices:

Sign can be used with Interval and CenteredInterval objects:

Specific Values  (5)

Values of Sign at fixed points:

Value at zero:

Values at infinity:

Evaluate symbolically:

Find a value of for which the TemplateBox[{x}, Sign]=0:

Visualize the result:

Visualization  (4)

Plot TemplateBox[{{x, +, 1}}, Sign] on the real axis:

Plot the real and imaginary parts of the function:

Visualize Sign in three dimensions:

Plot the real part of the function:

Plot the imaginary part of the function:

Function Properties  (12)

Sign is defined for all real and complex inputs:

Function range of Sign for real inputs:

The range over the complex plane is the unit circle plus the origin:

Sign is an odd function:

Sign has mirror symmetry TemplateBox[{TemplateBox[{z}, Conjugate, SyntaxForm -> SuperscriptBox]}, Sign]=TemplateBox[{TemplateBox[{z}, Sign]}, Conjugate]:

Sign is not a differentiable function:

The difference quotient does not have a limit in the complex plane:

There is only a limit in certain directions, for example, the real direction:

Use RealSign to obtain this real-differentiable result:

Sign is not an analytic function:

It has both singularities and discontinuities:

Over the complex plane, it is singular everywhere but still discontinuous only at the origin:

Sign is nonincreasing:

Sign is not injective:

Sign is not surjective:

Sign is neither non-negative nor non-positive:

Sign is neither convex nor concave:

TraditionalForm formatting:

Function Identities and Simplifications  (5)

Expand assuming real variables x and y:

Simplify Sign using appropriate assumptions:

Express a complex number as a product of Sign and Abs:

is equal to :

TemplateBox[{TemplateBox[{z}, Sign]}, Abs]=1 for all non-zero :

Applications  (2)

Plot the real and imaginary parts of Sign over the complex plane:

Define Rademacher functions:

Plot (vertically shifted) Rademacher functions:

Check orthogonality over the unit interval:

Properties & Relations  (10)

Sign with simple arguments automatically evaluates to simpler form:

Sign is idempotent:

Use FullSimplify to simplify expressions involving Sign:

Simplify under additional assumptions:

Assume realvalued variables:

Use Sign as a target function for ComplexExpand:

Use Sign in definite integration:

Integrate along a line in the complex plane, symbolically and numerically:

For complex values, the indefinite integral is path dependent:

The indefinite integral for real values:

Use in integral transforms:

Obtain Sign from integrals and limits:

Convert to Piecewise:


Possible Issues  (5)

Sign is a function of a complex variable and is therefore not differentiable:

As a complex function, it is not possible to write Sign[z] without involving Conjugate[z]:

In particular, the limit that defines the derivative is direction dependent and therefore does not exist:

Use RealSign, which assumes its argument is real, to obtain a differentiable version of Sign:

For purely real or imaginary approximate arguments, Sign returns exact answers:

For general complex arguments, Sign tracks the precision of the input:

Sign can stay unevaluated for numeric arguments:

Machineprecision numerical evaluation of Sign can give wrong results:

Arbitraryprecision evaluation gives the correct result:

A larger setting for $MaxExtraPrecision can be needed:

Sign applied to a matrix does not give the matrix sign function:

Neat Examples  (3)

Form repeated convolution integrals starting with a symmetric product of three sign functions:

Approximate Sign through a generalized Fourier series:

Calculate rational approximations of Sign:

Wolfram Research (1988), Sign, Wolfram Language function, (updated 2021).


Wolfram Research (1988), Sign, Wolfram Language function, (updated 2021).


Wolfram Language. 1988. "Sign." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021.


Wolfram Language. (1988). Sign. Wolfram Language & System Documentation Center. Retrieved from


@misc{reference.wolfram_2024_sign, author="Wolfram Research", title="{Sign}", year="2021", howpublished="\url{}", note=[Accessed: 28-May-2024 ]}


@online{reference.wolfram_2024_sign, organization={Wolfram Research}, title={Sign}, year={2021}, url={}, note=[Accessed: 28-May-2024 ]}