After analyzing the proof of Güntürk and Li (2021), Theorem 3.3,  I believe I found explicit error bounds for the Micchelli–Felbecker polynomials (iterated Bernstein polynomials) when $f(x)$ has a given number of continuous derivatives.  In the table below, let—$$||f(x)||_{C^k} = \max(\max_{0\le x \le 1} |f(x)|, \max_{0\le x \le 1} |f^{(k)}(x)|).$$

| No. of continuous derivatives |  Error bound |
   --- | --- |
| 4 | 0.2762 $||f(x)||_{C^4}/n^2$ |
| 5 | 0.7319 $||f(x)||_{C^5}/n^{5/2}$ |
| 6 | 1.007 $||f(x)||_{C^6}/n^3$ |

I would appreciate any corrections.

-----

Finding these bounds relies, in part, on finding upper bounds for the $d$-th central moments of the binomial($n$, $p$) distribution.  This is discussed in Molteni (2022); before Molteni there were almost no works on upper bounds for those moments.  

When $d$ is even, the moment is no greater than $A_d n^{d/2}$, where $A_d$ is a constant that depends on $d$ (DeVore and Lorentz 1993).  The goal here is to find this constant.  

The following table shows upper bounds for the $d$-th central moment.  The following are results on this moment:

- Molteni (2022) showed that the $d$-th moment is upper bounded by $\frac{d!}{(d/2)!8^{d/2}}  n^{-d/2}$ for even $r\le 44$ and proved another bound for even $d$ when $n$ is high enough.
- Adell et al. (2015) proved the very loose bound $2 (d/2)! n^{-d/2}$ for even or odd $d$.

Before I was aware of the two works above, I found upper bounds for $d=3$ ($(1/10) \sqrt{n^3} < (1/10) n^2$) and $d=5$ ($(9/100) \sqrt{n^5} < (9/100) n^3$) by inspecting the plots for low values of $n$ (which is admittedly not rigorous).

------

The following is Python code I used to calculate the error bounds for the iterated Bernstein polynomials.  It uses the SymPy computer algebra library.

```
def tnr(n,r):
   if r%2==0 and r<=44:
      return (factorial(r)/(factorial(r//2)*8**(r//2)))*n**(r//2)
   if r==1: return 0
   if r==3: return (S(1)/10)*sqrt(n**3) # Found by inspection; not rigorous
   if r==5: return (S(9)/100)*sqrt(n**5) # Found by inspection; not rigorous
   return 2*factorial(S(r)/2)*sqrt(n**r)
   raise ValueError

def gnr1(n,r,derivs):
   return (Max(derivs[0],derivs[r+1])/n**(r+1))*sqrt(tnr(n,2*(r+1)))/factorial(r+1)

def fnr(n,r,derivs):
   return derivs[r]*tnr(n,r)/(n**floor(r/2)*factorial(r))

def bnerror(n,r,derivs):
   return sum(derivs[i]*tnr(n,i)/(n**i*factorial(i)) for i in range(2,r+1))+gnr1(n,r,derivs)

def fnrderivs(n,r,alpha,derivs):
   d=[]
   for beta in range(0,(r+1-alpha)+1):
      d.append((Max(derivs[0],derivs[r+1])/(n**floor(alpha/2)*factorial(alpha)))*\
           sum(binomial(beta,g)*tnr(n,alpha)*factorial(alpha)/factorial(alpha-g) \
              for g in range(0,min(alpha,beta)+1)))
   #print(d)
   return d

def bnr(n,rr,derivs,r=None,gnd=True): # r=s-1, s is no. of cont. deriv.
   s=len(derivs)-1 # No. of continuous derivatives
   if r==None: r=s-1
   if rr==1: return bnerror(n,r,derivs)
   gn=gnr1(n,r,derivs)
   return sum(bnr(n,rr-1,fnrderivs(n,r,i,derivs))/n**((i+1)//2) \
       for i in range(2,r+1))+gn*2**(rr-1)

n=symbols('n',nonnegative=True,integer=True)
d0,d1,d2,d3,d4,d5,d6=symbols('d0 d1 d2 d3 d4 d5 d6',real=True,positive=True)
print(bnr(n,2,[d0,d1,d2,d3,d4]).simplify().n())
print(bnr(n,3,[d0,d1,d2,d3,d4,d5]).simplify().n())
print(bnr(n,3,[d0,d1,d2,d3,d4,d5,d6]).simplify().n())
```

## References

- C.S. Güntürk, W. Li, "[Approximation of functions with one-bit neural networks](https://arxiv.org/pdf/2112.09181.pdf)", arXiv:2112.09181 [cs.LG], 2021.
- Skorski, Maciej. "Handy formulas for binomial moments." arXiv preprint arXiv:2012.06270 (2020).
- DeVore, R.A., Lorentz, G.G., Constructive approximation, 1993.
- Molteni, Giuseppe. "Explicit bounds for even moments of Bernstein’s polynomials." Journal of Approximation Theory 273 (2022): 105658.
- Adell, J.A., Bustamante, J., Quesada, J.M., "Estimates for the moments of Bernstein polynomials" J. Math. Anal. Appl. 432 (2015).