Loading native/jni/src/suggest/core/layout/normal_distribution.h 0 → 100644 +49 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef LATINIME_NORMAL_DISTRIBUTION_H #define LATINIME_NORMAL_DISTRIBUTION_H #include <cmath> #include "defines.h" namespace latinime { // Normal distribution N(u, sigma^2). class NormalDistribution { public: NormalDistribution(const float u, const float sigma) : mU(u), mPreComputedNonExpPart(1.0f / sqrtf(2.0f * M_PI_F * GeometryUtils::SQUARE_FLOAT(sigma))), mPreComputedExponentPart(-1.0f / (2.0f * GeometryUtils::SQUARE_FLOAT(sigma))) {} float getProbabilityDensity(const float x) const { const float shiftedX = x - mU; return mPreComputedNonExpPart * expf(mPreComputedExponentPart * GeometryUtils::SQUARE_FLOAT(shiftedX)); } private: DISALLOW_IMPLICIT_CONSTRUCTORS(NormalDistribution); const float mU; // mean value const float mPreComputedNonExpPart; // = 1 / sqrt(2 * PI * sigma^2) const float mPreComputedExponentPart; // = -1 / (2 * sigma^2) }; } // namespace latinime #endif // LATINIME_NORMAL_DISTRIBUTION_H native/jni/src/suggest/core/layout/proximity_info_state_utils.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include "defines.h" #include "suggest/core/layout/geometry_utils.h" #include "suggest/core/layout/normal_distribution.h" #include "suggest/core/layout/proximity_info.h" #include "suggest/core/layout/proximity_info_params.h" Loading Loading @@ -717,8 +718,8 @@ namespace latinime { const float sigma = speedxAngleRate + speedxNearestKeyDistanceRate + ProximityInfoParams::MIN_STANDARD_DEVIATION; ProximityInfoUtils::NormalDistribution distribution(ProximityInfoParams::CENTER_VALUE_OF_NORMALIZED_DISTRIBUTION, sigma); NormalDistribution distribution( ProximityInfoParams::CENTER_VALUE_OF_NORMALIZED_DISTRIBUTION, sigma); // Summing up probability densities of all near keys. float sumOfProbabilityDensities = 0.0f; for (int j = 0; j < keyCount; ++j) { Loading native/jni/src/suggest/core/layout/proximity_info_utils.h +0 −22 Original line number Diff line number Diff line Loading @@ -125,28 +125,6 @@ class ProximityInfoUtils { return type == MATCH_CHAR || type == PROXIMITY_CHAR || type == ADDITIONAL_PROXIMITY_CHAR; } // Normal distribution N(u, sigma^2). struct NormalDistribution { public: NormalDistribution(const float u, const float sigma) : mU(u), mPreComputedNonExpPart(1.0f / sqrtf(2.0f * M_PI_F * GeometryUtils::SQUARE_FLOAT(sigma))), mPreComputedExponentPart(-1.0f / (2.0f * GeometryUtils::SQUARE_FLOAT(sigma))) {} float getProbabilityDensity(const float x) const { const float shiftedX = x - mU; return mPreComputedNonExpPart * expf(mPreComputedExponentPart * GeometryUtils::SQUARE_FLOAT(shiftedX)); } private: DISALLOW_IMPLICIT_CONSTRUCTORS(NormalDistribution); const float mU; // mean value const float mPreComputedNonExpPart; // = 1 / sqrt(2 * PI * sigma^2) const float mPreComputedExponentPart; // = -1 / (2 * sigma^2) }; // struct NormalDistribution private: DISALLOW_IMPLICIT_CONSTRUCTORS(ProximityInfoUtils); Loading Loading
native/jni/src/suggest/core/layout/normal_distribution.h 0 → 100644 +49 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef LATINIME_NORMAL_DISTRIBUTION_H #define LATINIME_NORMAL_DISTRIBUTION_H #include <cmath> #include "defines.h" namespace latinime { // Normal distribution N(u, sigma^2). class NormalDistribution { public: NormalDistribution(const float u, const float sigma) : mU(u), mPreComputedNonExpPart(1.0f / sqrtf(2.0f * M_PI_F * GeometryUtils::SQUARE_FLOAT(sigma))), mPreComputedExponentPart(-1.0f / (2.0f * GeometryUtils::SQUARE_FLOAT(sigma))) {} float getProbabilityDensity(const float x) const { const float shiftedX = x - mU; return mPreComputedNonExpPart * expf(mPreComputedExponentPart * GeometryUtils::SQUARE_FLOAT(shiftedX)); } private: DISALLOW_IMPLICIT_CONSTRUCTORS(NormalDistribution); const float mU; // mean value const float mPreComputedNonExpPart; // = 1 / sqrt(2 * PI * sigma^2) const float mPreComputedExponentPart; // = -1 / (2 * sigma^2) }; } // namespace latinime #endif // LATINIME_NORMAL_DISTRIBUTION_H
native/jni/src/suggest/core/layout/proximity_info_state_utils.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include "defines.h" #include "suggest/core/layout/geometry_utils.h" #include "suggest/core/layout/normal_distribution.h" #include "suggest/core/layout/proximity_info.h" #include "suggest/core/layout/proximity_info_params.h" Loading Loading @@ -717,8 +718,8 @@ namespace latinime { const float sigma = speedxAngleRate + speedxNearestKeyDistanceRate + ProximityInfoParams::MIN_STANDARD_DEVIATION; ProximityInfoUtils::NormalDistribution distribution(ProximityInfoParams::CENTER_VALUE_OF_NORMALIZED_DISTRIBUTION, sigma); NormalDistribution distribution( ProximityInfoParams::CENTER_VALUE_OF_NORMALIZED_DISTRIBUTION, sigma); // Summing up probability densities of all near keys. float sumOfProbabilityDensities = 0.0f; for (int j = 0; j < keyCount; ++j) { Loading
native/jni/src/suggest/core/layout/proximity_info_utils.h +0 −22 Original line number Diff line number Diff line Loading @@ -125,28 +125,6 @@ class ProximityInfoUtils { return type == MATCH_CHAR || type == PROXIMITY_CHAR || type == ADDITIONAL_PROXIMITY_CHAR; } // Normal distribution N(u, sigma^2). struct NormalDistribution { public: NormalDistribution(const float u, const float sigma) : mU(u), mPreComputedNonExpPart(1.0f / sqrtf(2.0f * M_PI_F * GeometryUtils::SQUARE_FLOAT(sigma))), mPreComputedExponentPart(-1.0f / (2.0f * GeometryUtils::SQUARE_FLOAT(sigma))) {} float getProbabilityDensity(const float x) const { const float shiftedX = x - mU; return mPreComputedNonExpPart * expf(mPreComputedExponentPart * GeometryUtils::SQUARE_FLOAT(shiftedX)); } private: DISALLOW_IMPLICIT_CONSTRUCTORS(NormalDistribution); const float mU; // mean value const float mPreComputedNonExpPart; // = 1 / sqrt(2 * PI * sigma^2) const float mPreComputedExponentPart; // = -1 / (2 * sigma^2) }; // struct NormalDistribution private: DISALLOW_IMPLICIT_CONSTRUCTORS(ProximityInfoUtils); Loading