コード例 #1
0
ファイル: DenseVectorN.cpp プロジェクト: dpressel/n3rd-cpp
void DenseVectorN::from(const VectorN &source)
{
    int length = source.length();
    x.resize({length}, 0.0);
    Offsets offsets = source.getNonZeroOffsets();
    for (Offset offset : offsets)
    {
        x[offset.first] = offset.second;
    }
}
コード例 #2
0
ファイル: DenseVectorN.cpp プロジェクト: dpressel/n3rd-cpp
double DenseVectorN::dot(const VectorN& vec) const
{
    if (vec.getType() == DENSE)
    {
        return ddot((const DenseVectorN&)vec);
    }
    auto acc = 0.;
    for (auto offset : vec.getNonZeroOffsets())
    {
        acc += x[offset.first] * offset.second;
    }
    return acc;
}