In general, one may find the arc length of a graph of f[x] with ArcLength[{x, f[x]}, {x, a, b}] since V10.0, although its robustness improves (hopefully) with age. In this case, the difficulty is Re[] in f[x], and Re[z] is not a differentiable function of a complex variable. However, Re[g[x]] can be a differentiable function of a real variable x. The next problem is that ComplexExpand does not work in this case, as recommended in the documentation for Re (see "Possible Issues"). Thus, I am thrown back onto basic principles, namely, use the definition of the derivative, which will be found defining fp[x] below. Now we have to get ArcLength to use it. To do this, we need to prevent f[x] from evaluating. It would be nice if it were defined as f[x_?NumericQ]; however, while that's convenient for this purpose, it is often inconvenient for other purposes. But we can easily temporarily redefine f[] this way as done below, while also defining the derivative of f[x]. (The limit could be done inside Block; but (1) I wanted to show the result and (2) since it takes so long, it's nice to do it once and save the result. Actually, the result is partially cached, so recomputing gets faster.)
fp[x_] = (* takes 13+ sec. *)
Limit[(f[x + h] - f[x])/h, h -> 0, Assumptions -> x > 0] //
FullSimplify
(*
x^(-(3/2) - ZetaZero[2]) *
(-x - x^(2 ZetaZero[2]) +
x^ZetaZero[2] (-2 + Log[x]) Re[ExpIntegralEi[Log[x] ZetaZero[2]]])
*)
Block[{f, y = f[x]},
f /: HoldPattern[D[f[x], x]] = fp[x];
f[x_?NumericQ] = y;
ArcLength[{x, f[x]}, {x, (x /. a[[2]]), (x /. b[[2]])}]
]
(* 0.308277 *)
fsansRe[], and then useRe[]on the max, min, plot, andNIntegrate, they will all work. As it stands,Dhas trouble with theRebecause it is not an analytic function. – Daniel Lichtblau Sep 15 '14 at 18:38