I need to maximize the following function (the input to `NMaximize`

below)

` NMaximize[{((1/3) + f[p]*(1 - p)*(((1/(Sqrt[2]/2))*p)^2-1))/(1+(1-p)* (((1/(Sqrt[2]/2))*p)^2 - 1)), p >= Sqrt[2]/2, p <= 1}, {p}] `

where $ f(\cdot)$ is defined as follows

` f[p_?NumericQ] := NMinimize[{-((a + a^2 + b - 2 a b + b^2 + c - 2 a c - 2 b c + c^2) /((-1 + a) (a + b + c))), 0 <= a, a <= b, b <= c, c <= 1, c <= a + b, (a + b + c)/3 <= p}, {a, b, c}, Method -> "DifferentialEvolution"][[1]] `

However, as expected, the computation does not end and there are several alert messages. For the underlying mathematical problem I am trying to solve, I could replace $ f(\cdot)$ by a simple function $ g(\cdot)$ that approximates it, but I need $ g(p)\le f(p)$ for all $ p\in[0,1]$ . I tried to use `InterpolatingPolynomial`

with a few values of $ f(\cdot)$ . However, $ f(\cdot)$ is neigher concave nor convex in $ [0,1]$ , and I am struggling to obtain a good approximation of $ f(\cdot)$ which satisfies the $ g(p)\le f(p)$ in $ [0,1]$ .

Do you know how any method for generating such approximation function $ g(\cdot)$ (or solving the maximization problem in a different way)?