FunctionMeromorphic[f,x]
tests whether
is a meromorphic function of x.
FunctionMeromorphic[f,{x1,x2,…}]
tests whether
is a meromorphic function of x1,x2,….
FunctionMeromorphic[{f1,f2,…},{x1,x2,…}]
tests whether
are meromorphic functions for x1,x2,….
FunctionMeromorphic[{funs,cons},xvars]
tests whether
are meromorphic functions for xvars in an open set containing the solutions of the constraints cons.
FunctionMeromorphic
FunctionMeromorphic[f,x]
tests whether
is a meromorphic function of x.
FunctionMeromorphic[f,{x1,x2,…}]
tests whether
is a meromorphic function of x1,x2,….
FunctionMeromorphic[{f1,f2,…},{x1,x2,…}]
tests whether
are meromorphic functions for x1,x2,….
FunctionMeromorphic[{funs,cons},xvars]
tests whether
are meromorphic functions for xvars in an open set containing the solutions of the constraints cons.
Details and Options
- A function
is meromorphic if it can be represented as
, where
and
are complex analytic functions. - A function
is meromorphic if it can be locally represented as
, where
and
are complex analytic functions. - If funs contains parameters other than xvars, the result is typically a ConditionalExpression.
- cons can contain inequalities or logical combinations of these.
- The following options can be given:
-
Assumptions $Assumptions assumptions on parameters GenerateConditions True whether to generate conditions on parameters PerformanceGoal $PerformanceGoal whether to prioritize speed or quality - Possible settings for GenerateConditions include:
-
Automatic nongeneric conditions only True all conditions False no conditions None return unevaluated if conditions are needed - Possible settings for PerformanceGoal are "Speed" and "Quality".
Examples
open all close allBasic Examples (3)
Test whether univariate functions are meromorphic:
FunctionMeromorphic[Tan[x], x]FunctionMeromorphic[Log[x], x]Test whether multivariate functions are meromorphic:
FunctionMeromorphic[Pochhammer[x, y], {x, y}]FunctionMeromorphic[Gamma[x, y], {x, y}]Test whether functions are meromorphic over restricted domains:
FunctionMeromorphic[{Tanh[x] / Log[x], Re[x] > 0}, x]FunctionMeromorphic[{Gamma[x, y], Re[y] > 0}, {x, y}]Scope (4)
FunctionMeromorphic[Gamma[z], z]The only singularities are poles:
ComplexPlot[Gamma[z], {z, -2 - 2I, 2 + 2I}]FunctionMeromorphic[Sqrt[z], z]It has a branch cut along the negative real axis:
ComplexPlot[Sqrt[z], {z, -2 - 2I, 2 + 2I}]Functions with restricted domains:
FunctionMeromorphic[{Sqrt[z], Im[z] > 0}, z]FunctionMeromorphic[{Log[I z] / (z ^ 8 + 1), Im[z] < 0}, z]The branch cut along the positive imaginary axis is outside the restricted domain:
ComplexPlot[Log[I z] / (z ^ 8 + 1), {z, -2 - 2I, 2 + 2I}]FunctionMeromorphic[Tanh[x + y] / (x ^ 2 + y ^ 2 + 1), {x, y}]FunctionMeromorphic[x ^ y, {x, y}]Functions with symbolic parameters:
FunctionMeromorphic[{Log[z + a], Re[z] > 0}, z]Options (4)
Assumptions (1)
FunctionMeromorphic cannot find the answer for arbitrary values of the parameter
:
FunctionMeromorphic[Sin[z] ^ a, z]With the assumption that
is a positive integer, FunctionMeromorphic succeeds:
FunctionMeromorphic[Sin[z] ^ a, z, Assumptions -> Element[a, PositiveIntegers]]GenerateConditions (2)
By default, FunctionMeromorphic may generate conditions on symbolic parameters:
FunctionMeromorphic[{Log[z + a], Re[z] > 0}, z]With GenerateConditions->None, FunctionMeromorphic fails instead of giving a conditional result:
FunctionMeromorphic[{Log[z + a], Re[z] > 0}, z, GenerateConditions -> None]This returns a conditionally valid result without stating the condition:
FunctionMeromorphic[{Log[z + a], Re[z] > 0}, z, GenerateConditions -> False]By default, all conditions are reported:
FunctionMeromorphic[a Sqrt[z], z]With GenerateConditions->Automatic, conditions that are generically true are not reported:
FunctionMeromorphic[a Sqrt[z], z, GenerateConditions -> Automatic]PerformanceGoal (1)
Use PerformanceGoal to avoid potentially expensive computations:
FunctionMeromorphic[{Log[z + a b], Re[z] > 0}, z, PerformanceGoal -> "Speed"]The default setting uses all available techniques to try to produce a result:
FunctionMeromorphic[{Log[z + a b], Re[z] > 0}, z]Applications (12)
Classes of Meromorphic Functions (7)
Rational functions are meromorphic:
{FunctionMeromorphic[(x/x^2 + 1), x], FunctionMeromorphic[(x^2 + 1/x^2 - 1), x], FunctionMeromorphic[x^3 - 2 x^2 - 5 x + 6, x]}Tan, Sec and Sech are meromorphic:
{FunctionMeromorphic[Tan[x], x], FunctionMeromorphic[Sec[x], x], FunctionMeromorphic[Sech[x], x]}Grid[Partition[Table[Plot[f, {x, -5, 5}], {f, {(x/x^2 + 1), (x^2 + 1/x^2 - 1), x^3 - 2 x^2 - 5 x + 6, Tan[x], Sec[x], Sech[x]}}], 3]]Visualizing the functions in a plane shows that their singularities are no worse than poles:
Grid[Partition[Table[ComplexPlot3D[f, {x, 5}, ClippingStyle -> None], {f, {(x/x^2 + 1), (x^2 + 1/x^2 - 1), x^3 - 2 x^2 - 5 x + 6, Tan[x], Sec[x], Sech[x]}}], 3]]Functions with branch cuts like Log are not meromorphic:
FunctionMeromorphic[Log[z], z]Neither are Sqrt or any noninteger power:
FunctionMeromorphic[Sqrt[z], z]FunctionMeromorphic[z^2 / 7, z]Inverse trigonometric and hyperbolic functions like ArcSin, ArcTan and ArcCsch are similarly non-meromorphic:
Table[FunctionMeromorphic[f[z], z], {f, {ArcSin, ArcTan, ArcCsch}}]Non-differentiable functions like Abs, Sign and Re are not meromorphic:
D[{Abs[z], Sign[z], Re[z]}, z]Table[FunctionMeromorphic[f[z], z], {f, {Abs, Sign, Re}}]Visualize some of these functions:
Grid[Partition[Table[ComplexPlot3D[f, {z, 2}, ClippingStyle -> None], {f, {Log[z], Sqrt[z], ArcSin[z], ArcTan[z], ArcCsch[z], Re[z]}}], 3]]Functions that are only defined for real inputs, like UnitStep and TriangleWave, cannot be meromorphic:
FunctionMeromorphic[UnitStep[x], x]FunctionMeromorphic[TriangleWave[x], x]These functions are not defined for complex value:
{UnitStep[I], TriangleWave[I]}Every function analytic in the complex plane is meromorphic:
{FunctionAnalytic[z^2 + 3z + 5, z, ℂ], FunctionMeromorphic[z^2 + 3z + 5, z]}{FunctionAnalytic[Exp[z], z, ℂ], FunctionMeromorphic[Exp[z], z]}{FunctionAnalytic[Sin[z], z, ℂ], FunctionMeromorphic[Sin[z], z]}Arithmetic combinations of meromorphic functions are meromorphic:
FunctionMeromorphic[Tan[z] + Sin[z], z]FunctionMeromorphic[Cot[z] - (z^2/z + 1), z]FunctionMeromorphic[(z^3/z^2 + 1)Tanh[z], z]FunctionMeromorphic[(Cot[z]/Exp[z]), z]As all trigonometric and hyperbolic functions are arithmetic combinations of Exp, they are all meromorphic:
Table[FunctionMeromorphic[f[z], z], {f, {Sin, Cos, Tan, Cot, Sec, Csc, Sinh, Cosh, Tanh, Coth, Sech, Csch}}]More generally, any rational combination of meromorphic functions is meromorphic:
FunctionMeromorphic[(Tan[z] + 2Cot[z] + Cos[z]^3/Sin[z]Cos[z]), z]FunctionMeromorphic[(Tanh[z]Csc[z] + Csch[z]Tan[z]/Sin[z] ^ 2 + Cos[z]Cosh[z]), z]Visualize Exp and the eight nonanalytic trigonometric and hyperbolic functions:
Grid[Partition[Table[ComplexPlot3D[f[x], {x, 3π}, PlotRange -> {0, 2}, ClippingStyle -> None, PlotLabel -> f[z]], {f, {Exp, Cot, Csc, Tan, Sec, Coth, Csch, Tanh, Sech}}], 3]]The compositions of meromorphic functions need not be meromorphic:
Table[FunctionMeromorphic[f, z], {f, {Tan[z], Cot[z], Tan[Cot[z]]}}]The singularities of a meromorphic might bunch up under composition, leading to a non-pole singularity:
ComplexPlot3D[Tan[Cot[z]], {z, 3}, ClippingStyle -> None]There is an essential singularity at the origin, as evidenced by the following limit:
Underscript[, zUnderscript[ -> , ℂ]0]Tan[Cot[z]]However, the composition of a meromorphic function with an analytic function is always meromorphic:
FunctionMeromorphic[Tan[Sin[z]], z]Table[FunctionMeromorphic[f, z], {f, {Gamma[z], Gamma[Exp[z]]}}]Table[FunctionMeromorphic[f, z], {f, {Beta[z, 2], Beta[z^2 + 3z + 2, 2]}}]Visualize the composite functions:
Grid[{Table[ComplexPlot3D[f, {z, 3}, ClippingStyle -> None], {f, {Tan[Sin[z]], Gamma[Exp[z]], Beta[z^2 + 3z + 2, 2]}}]}]Multivariate rational functions are meromorphic:
{FunctionMeromorphic[(x^2 - y^2 + 1/x^2 - y), {x, y}], FunctionMeromorphic[(x^2 - y^2/x^2 + y^2 + 1), {x, y}]}Unlike functions of a single variable, singularities lie along curves, in the first function along
:
Plot3D[(x^2 - y^2 + 1/x^2 - y), {x, -3, 3}, {y, -3, 3}, ClippingStyle -> None, BoxRatios -> 1]Plotting the second function in the
plane shows the blowup along the hyperbolas
:
Plot3D[(x^2 + (I y)^2/x^2 + (y I)^2 + 1), {x, -4, 4}, {y, -4, 4}, ClippingStyle -> None, BoxRatios -> 1]By composing with analytic univariate functions, many more analytic functions can be generated:
{FunctionMeromorphic[Tan[x ^ 2 + 3x y - 7y ^ 2], {x, y}], FunctionMeromorphic[(Cos[x]^2 - Sin[y]^2/Sin[x]^2 + Cos[y]^2 + 1), {x, y}], FunctionMeromorphic[Sech[(x^2 - y^2/Exp[x^2 - y])], {x, y}]}The complete Beta function
is meromorphic:
FunctionMeromorphic[Beta[x, y], {x, y}]It can be considered a multivariate rational function in Gamma:
Beta[x, y]//FunctionExpandPlot3D[Beta[x, y], {x, -2, 2}, {y, -2, 2}, PlotPoints -> 101, ClippingStyle -> None]Integrating Functions (5)
The Limit of a meromorphic function is always either a number or ComplexInfinity:
{Underscript[, zUnderscript[ -> , ℂ]0]Cot[z], Underscript[, zUnderscript[ -> , ℂ](π/4)]Cot[z], Underscript[, zUnderscript[ -> , ℂ](π/2)]Tan[z], Underscript[, zUnderscript[ -> , ℂ]π]Tan[z]}Sqrt has points where the limit does not exist, so it cannot be meromorphic:
{Underscript[, zUnderscript[ -> , ℂ]-1]Sqrt[z], FunctionMeromorphic[Sqrt[z], z]}The singular points of a meromorphic function, called poles, have a Residue associated with them:
Residue[Cot[z], {z, 0}]The residue is the coefficient of
in the power series expansion of the function:
Series[Cot[z], {z, 0, 0}]The integral of a meromorphic function around a closed contour equals
times the sum of the residues of the poles enclosed by by the curve. Compute the integral of
around the origin, which is clearly its only pole:
Integrate[(1/z), {z, 1, E^(I π/3), E^(2 I π/3), -1, E^-(2 I π/3), E^-(I π/3), 1}]This must equal
the residue at
:
2 π I Residue[(1/z), {z, 0}]Any other closed contour would give the same result, for example, a circular one:
Integrate[(1/Exp[I ω])(I Exp[I ω]), {ω, 0, 2π}]Visualize the function and the contours:
ComplexPlot[1 / z, {z, 1.2}, PlotLegends -> Automatic, Epilog -> {Arrowheads[Medium], Arrow[ReIm /@ Exp[2π I / 6 Range[0, 6]]], GrayLevel[.1], Dashed, Circle[]}]If the contour does not enclose the singularity, the integral will be zero:
Integrate[(1/z), {z, 1, E^(I π/3), E^-(I π/3), 1}]Visualize the function with this alternate contour:
ComplexPlot[1 / z, {z, 1.2}, PlotLegends -> Automatic, Epilog -> {Arrowheads[Medium], Arrow[ReIm /@ Exp[2π I / 6 Drop[ Range[0, 6], {3, 5}]]]}]If all the singular points of a function have the same or related residues, integrals over a closed contour can be used to count the number of poles enclosed. For example,
has a pole with residue
at every half-integer multiple of
:
FullSimplify[Residue[Tan[z], {z, (n + (1/2))π}, Assumptions -> n∈ℤ], n∈ℤ]The integral of
over a rectangle straddling the real axis counts the number of half-integer multiples of
enclosed:
Table[Integrate[(-Tan[z]/2π I), {z, -I, -I + a, I + a, I, -I}], {a, 1, 9, 2}]//FullSimplifyA common application of contour integrals is to evaluate integrals over the real line, by extending the contour to a closed one with a semicircle in the upper or lower half-plane. If the portion of the integral over the semicircle vanishes, the contour integral must equal the real integral. Consider
. The integrand is meromorphic:
FunctionMeromorphic[(1/1 + z^4), z]The singularities of the integrand occur where the denominator is zero:
Solve[z ^ 4 + 1 == 0, z]Complete the contour using a semicircle in the upper half-plane and compute the integral using residues:
2π I (Residue[(1/1 + z^4), {z, (-1)^1 / 4}] + Residue[(1/1 + z^4), {z, (-1)^3 / 4}])//FullSimplifyThe integral over the semicircle is of order
as
, so the real integral must have the same value:
Integrate[(1/1 + x^4), {x, -∞, ∞}]For integrands of the form
with
,
meromorphic,
continuous on
, and
for large
, the integral
can be computed as
times the sum of the residues of
in the upper half-plane. Use this to compute
. First, verify that
is meromorphic:
FunctionMeromorphic[(1/z^2 + b^2), z, Assumptions -> b > 0]The function also decays at infinity as is required:
Simplify[(1/z ^ 2 + b ^ 2) < (1/z), z > b && z > 1]There is a single pole in the upper half-plane at
:
Residue[(Exp[I z]/z ^ 2 + b ^ 2), {z, I b}]2 Pi I %Since
and
is even,
is half of the previous result:
% / 2Verify the result with a direct computation:
Subsuperscript[∫, 0, ∞](Cos[x]/b^2 + x^2)ⅆxProperties & Relations (5)
A meromorphic function is differentiable arbitrarily many times:
f = Tan[x] ^ 2;FunctionMeromorphic[f, x]Use D to compute derivatives:
NestList[D[#, x]&, f, 5]//ColumnFormA meromorphic function can be expressed as a Taylor series at each point of its domain:
f = Tan[x] ^ 2 - 2 ^ x;FunctionMeromorphic[f, x]Use Series to compute initial terms of the Taylor series:
s = Series[f, {x, 0, 3}]The resulting polynomial approximates
near
:
Plot@@{{f, Normal[s]}, {x, -1, 1}}At its poles, the function can be expressed as a Laurent series with a finite principal part:
ls = Series[f, {x, Pi / 2, 2}]Plot@@{{f, Normal[ls]}, {x, -1, 4}}A meromorphic function can have only finitely many zeros and poles in a compact region:
f = Tan[3x ^ 3] - 2x + 1;FunctionMeromorphic[f, x]Use Solve to find the zeros of
in the unit disk:
z = Solve[f == 0 && Abs[x] ≤ 1, x]Use FunctionSingularities to find the poles of
in the unit disk:
p = Solve[FunctionSingularities[f, x] && Abs[x] ≤ 1, x]Plot
, its zeros (blue) and its poles (red):
ComplexPlot[f, {x, -1 - I, 1 + I}, ...]The argument principle states that the difference between the number of zeros and the number of poles of
(counted with multiplicities) is given by
. Use NIntegrate to compute
:
1 / (2Pi I)NIntegrate@@{(D[f, x] / f /. x -> Exp[I t])D[Exp[I t], t], {t, 0, 2Pi}}//ChopVerify that all
are simple zeros of
:
D[f, x] ≠ 0 /. zUse Limit to verify that all
are simple poles of
:
0 < Abs[Limit[f (x - #), x -> #]] < Infinity& /@ (x /. p)Length[z] - Length[p]A quotient of complex analytic functions is meromorphic:
f = 2 ^ Sin[x ^ 2 + 7] - x;
g = Cos[x ^ 3 + 7x - 4] - 3 ^ x;Use FunctionAnalytic to check that
and
are analytic:
FunctionAnalytic[#, x, Complexes]& /@ {f, g}Verify that
and
are meromorphic:
FunctionMeromorphic[#, x]& /@ {f / g, g / f}Meromorphic functions may not be complex analytic:
FunctionMeromorphic[Tan[x], x]FunctionAnalytic[Tan[x], x, Complexes]The only singularities a meromorphic function can have are poles and removable singularities:
FunctionMeromorphic[Sin[x] / (x ^ 3 - x), x]Use FunctionSingularities to find a condition satisfied by all singularities:
FunctionSingularities[Sin[x] / (x ^ 3 - x), x]Use SolveValues to find the singularities:
SolveValues[%, x]Use FunctionPoles to find the poles and their multiplicities:
FunctionPoles[Sin[x] / (x ^ 3 - x), x]Use ResidueSum to compute the sum of residues in the right half-plane:
ResidueSum[{Sin[x] / (x ^ 3 - x), Re[x] >= 0}, x]Related Guides
History
Text
Wolfram Research (2020), FunctionMeromorphic, Wolfram Language function, https://reference.wolfram.com/language/ref/FunctionMeromorphic.html.
CMS
Wolfram Language. 2020. "FunctionMeromorphic." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/FunctionMeromorphic.html.
APA
Wolfram Language. (2020). FunctionMeromorphic. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FunctionMeromorphic.html
BibTeX
@misc{reference.wolfram_2026_functionmeromorphic, author="Wolfram Research", title="{FunctionMeromorphic}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/FunctionMeromorphic.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_functionmeromorphic, organization={Wolfram Research}, title={FunctionMeromorphic}, year={2020}, url={https://reference.wolfram.com/language/ref/FunctionMeromorphic.html}, note=[Accessed: 12-June-2026]}