As far as I know, it is only the fully covariant form $R_{ijkl}$ or the fully contravariant form $R^{ijkl}$ that have the nice symmetries reducing the number of independent components to 21. (And then the algebraic Bianchi identity reduces the number to 20.)
These tensors are antisymmetric in the first two indices, antisymmetric in the last two indices, and symmetric when the first two are swapped with the last two.
This means that to get the independent components, you can first restrict $ij$ and $kl$ to be the six pairs 01, 02, 03, 12, 13, and 23. You don't have to consider 00, 11, 22, and 33 because these components are zero by antisymmetry. And you don't have to consider, say, 10, because you can swap it to get 01, with a minus sign, again by antisymmetry.
Next, by the symmetry of swapping the first two with the last two, you can restrict $ij$ to be "less than or equal to" $kl$, giving the following 21 components:
$$\begin{matrix} 0101 && 0102 && 0103 && 0112 && 0113 && 0123 \ && 0202 && 0203 && 0212 && 0213 && 0223 \ && && 0303 && 0312 && 0313 && 0323 \ && && && 1212 && 1213 && 1223 \ && && && && 1313 && 1323 \ && && && && && 2323 \end{matrix}$$
The algebraic <PERSON> identity in four dimensions is a single relation between the three components in which all the indices are different:
$$R_{0123}-R_{0213}+R_{0312}=0$$
so you can consider any one of these three to be redundant and not calculate it "the hard way".
So I think you need to give up on the idea that you are only interested in ${R^i}{jkl}$. You should instead calculate the 20 components $R{ijkl}$ above, use the <PERSON> identity to get the 21st, and then use symmetry and antisymmetry to get the remaining 236. 945
For example,
$$R_{2103}=-R_{0312}$$
because starting with 2103 you can reverse the first two to get 1203, introducing a minus sign because of the antisymmetry, and then swap the first two with the last two to get 0312, which is in the list above.
So, to calculate a component of $R_{ijkl}$, do you have to first compute four components of ${R^i}_{jkl}$ using the standard formula and then contract them with the metric tensor? No! There is a formula (from Wikpedia's List of formulas in Riemannian geometry) which you can use to directly calculate fully-covariant components:
$$R_{iklm}=\frac{1}{2}\left(\frac{\partial^2 g_{im}}{\partial x^k \partial x^l}+\frac{\partial^2 g_{kl}}{\partial x^i \partial x^m}-\frac{\partial^2 g_{il}}{\partial x^k \partial x^m}-\frac{\partial^2 g_{km}}{\partial x^i \partial x^l}\right)+g_{np}({\Gamma^n}{kl}{\Gamma^p}{im}-{\Gamma^n}{km}{\Gamma^p}{il})$$
So a good strategy would be to
1. Calculate first derivatives of the metric components, remembering that the metric is symmetric, and cache them.
2. Use the cached first derivatives to calculate the <PERSON> symbols, remembering that they are symmetric on the lower indices, and cache them.
3. Use the cached first derivatives to calculate second derivatives of the metric, remembering that they are symmetric in the partials, and cache them.
4. Calculate the 20 independent fully-covariant components of the <PERSON> tensor using the formula above.
5. Calculate everything else from these.
If you can show that the <PERSON> tensor of the <PERSON> metric vanishes, that will be a good test case. 364