# What is the status of ComplexAnalysisBranchPoints and ComplexAnalysisBranchCuts?

In 13.3 and I believe quite a few versions earlier I could perform

 ComplexAnalysisBranchPoints[Sqrt[z^2 - 1], z] and

ComplexAnalysisBranchCuts[Sqrt[z^2 - 1], z]


The functions seem undocumented.

What is their status? Are they there just to support other Complex Analysis functions? Or will they become mainstream available soon, what do you think? If you have any (preliminary) documentation, please provide.

• I'd like to notice that ComplexAnalysis'BranchPoints[Sqrt[z^(9/2) - 1], z] and ComplexAnalysis ' BranchCuts[Sqrt[z^(9/2) - 1], z] are much stronger than their Maple's analogs. However I have got a problem with plotting the result of the latter. Commented Aug 30, 2023 at 16:44
• Perhaps you can find something in the Graphics Guide. I found how to visualize Riemann surfaces in that guide. - I was tipped by Bing Chat. Commented Aug 30, 2023 at 20:31
• Commented Jan 20 at 7:41
• @Silvia While it might be tempting to think that singularities must always be branch points, it is not true in general. math.stackexchange.com/a/2137633/1280840 Commented Jan 20 at 9:07
• @lotus2019 That's surely correct. I just wanted to bring up a function of related topic, no further implies intended. Commented Jan 20 at 9:16

I think those commands leave much to be desired at the present. For example,

ComplexAnalysisBranchPoints[Sqrt[z^(9/2) - 1], z]


{0, 1, -(-1)^(1/9), (-1)^(2/9), -(-1)^(1/3), (-1)^( 4/9), -(-1)^(5/9), (-1)^(2/3), -(-1)^(7/9), (-1)^( 8/9), ComplexInfinity}

If I am not mistaken, the above result is not true. The function under consideration has its branch points at 0, where z^(9/2) has, and at the roots of z(9/2)==1. But

Reduce[z^(9/2) == 1, z]


z == 1 || z == -(-1)^(1/9) || z == (-1)^(4/9) || z == -(-1)^(5/9) || z == (-1)^(8/9)

Not taking into account ComplexInfinity, we see only 6 branch points, not 10 ones.

• One more bug : ComplexAnalysis'BranchPoints[Cos[Sqrt[z]], z] results in {0} though Cos[Sqrt[z]] is known to be an entire function. Commented Sep 2, 2023 at 7:06
• Are there any good examples?? Or is it all broken? Commented Sep 25, 2023 at 5:00

When the function ComplexAnalysisBranchPoints operates on radical functions, it often mistakenly treats ComplexInfinity or 0 as branch points. In such cases, it is necessary to validate or exclude them based on the definition of branch points, for example:

Clear["Global*"];
expr = Sqrt[(z - a)*(z + b)];
pts = Assuming[a > 0 && b > 0, ComplexAnalysisBranchPoints[expr, z]]


(* {a, -b, ComplexInfinity} *)

According to the definition of branch points ( https://encyclopediaofmath.org/wiki/Branch_point ;

expr1 = Sqrt[(r  Exp[I  \[Theta]] - a)*(r  Exp[I  \[Theta]] + b)]
expr2 = Simplify[expr1 /. {\[Theta] -> \[Theta] + 2  \[Pi]}]
expr1 == expr2


(* True *)

Therefore, ComplexInfinity is not a branch point.

While it might be tempting to think that singularities must always be branch points, it is not true in general. See https://math.stackexchange.com/a/2137633/1280840

It is necessary to revise the code of ComplexAnalysis$$$$BranchPoints from the perspective of the branch point definition, or develop a new universally applicable function for determining the branch point.

• You wrote "According to the definition of branch points". Can you give us an accessible reference to that definition? Commented Jan 21 at 9:06
• I think you have to be a bit more careful when you use Mathematica for this type work. It's not using global analytic functions, but functions with branch cuts. For instance, subbing expr1 = Sqrt[r Exp[I \[Theta]]] into your example yields True. In fact, probably for every function, f[r Exp[I \[Theta]]] /. {\[Theta] -> \[Theta] + 2 \[Pi]}] yields f[r Exp[I \[Theta]]]`. Commented Jan 21 at 21:30
• @Goofy You are right, and I may have made a mistake in my examples. I provided two correct examples in this question: mathematica.stackexchange.com/q/296769/69835. Commented Jan 22 at 4:44
• How do you define "Radical Function" ? Commented Mar 6 at 18:37