When the function ComplexAnalysis`BranchPoints 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, ComplexAnalysis`BranchPoints[expr, z]]
(* {a, -b, ComplexInfinity} *)
According to the definition of branch points ( https://encyclopediaofmath.org/wiki/Branch_point ;
https://mathworld.wolfram.com/BranchPoint.html ):
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.
ComplexAnalysis'BranchPoints[Sqrt[z^(9/2) - 1], z]andComplexAnalysis ' 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. – user64494 Aug 30 '23 at 16:44FunctionProperties`Singularities](https://mathematica.stackexchange.com/a/271955/17). – Silvia Jan 20 '24 at 07:41