Это типовое решение, но нехорошее ИМНО - кэширование хреновое может быть, и вааще, если нуна скорость то конечно надо писать самому.
А так еть у меня теплэйтная либка маленькая, для векторов произвольной размерности (сиречь матриц:)). Могу поделиться если влом писать/искать... ася 203458558