# Can NDEigensystem use arbitrary precision arithmetic?

Consider the following computation of an eigenfunction of 1D Laplacian on the interval of $[0,\pi]$:

sol[p_, order_] :=
NDEigensystem[{Laplacian[u[x], {x}], DirichletCondition[u[x] == 0, True]},
u, {x, 0, Pi}, 1,
Method -> {"SpatialDiscretization" -> {"FiniteElement",
"MeshOptions" -> {"MaxCellMeasure" -> 0.1 2^p},
"IntegrationOrder" -> order}}][[1, 1]]
tab = Table[{2^p, Abs[-1 - sol[p, order]]}, {order, 2, 5}, {p, -10, 8}];
ListLogLogPlot[tab, PlotRange -> All, Joined -> True,
PlotStyle -> {Automatic, Dashed, Automatic, Dashed}, Frame -> True, GridLines -> Automatic]


Obviously, there's a lack of working precision for $p<-3$. But wherever I tried to insert WorkingPrecision->30 option in the NDEigensystem call, it didn't work. I tried to put it as a last argument in the call, to "Arnoldi" method option, but got "unknown option" response every time.

So I wonder: can NDEigensystem use arbitrary-precision arithmetic? If yes, then what is the syntax to request particular working precision?

• I guess, after assempling stiffness and mass matrix into sparse arrays, NDEigensystem calls Intel MKL routines or similar subroutines to compute (parts of) eigensystems. In that case, the answer would be: Nope, there is no way to increase the working precision. Commented Feb 8, 2018 at 15:56
• @HenrikSchumacher, the reference you give is for FEAST which can be called as a method option The default for FEM is Arnoldi - but quite frankly I do not know which code it is based on (but not MKL). The Direct solver is an inhouse solver IIRC. Commented Feb 8, 2018 at 20:43

No, at this point in time (V11.2) and in the forseeable future NDEigensystem does not work with arbitrary precision, because the FEM code is machine precision code only.