Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(460)

Unified Diff: third_party/google_input_tools/src/chrome/os/inputview/elements/content/gaussianestimator.js

Issue 674153004: Add third_party/google-input-tools: Take 2 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@google_input_tools
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/google_input_tools/src/chrome/os/inputview/elements/content/gaussianestimator.js
diff --git a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/gaussianestimator.js b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/gaussianestimator.js
new file mode 100644
index 0000000000000000000000000000000000000000..9704c63bc4ff8068304695410074f8eeb593ac79
--- /dev/null
+++ b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/gaussianestimator.js
@@ -0,0 +1,87 @@
+// Copyright 2014 The ChromeOS IME Authors. All Rights Reserved.
+// limitations under the License.
+// See the License for the specific language governing permissions and
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// Unless required by applicable law or agreed to in writing, software
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// You may obtain a copy of the License at
+// you may not use this file except in compliance with the License.
+// Licensed under the Apache License, Version 2.0 (the "License");
+//
+goog.provide('i18n.input.chrome.inputview.elements.content.GaussianEstimator');
+
+
+goog.scope(function() {
+
+/**
+ * A tool class to calculate probability with Gaussian distribution.
+ * Gaussian(x, y) = Norm * exp (-(1/2) * ((x - centerX) ^ 2 * CinvX + (y -
+ * centerY) ^ 2 * CinvY))
+ * where
+ * CinvX = 1 / (AmplitudeX * Covariance)
+ * CinvY = 1 / (AmplitudeY * Covariance)
+ * Norm = 1 / (2 * PI) * Sqrt(CinX * CinY)
+ * LogGaussian(x, y) = LogNorm + (-1/2) * ((x - centerX) ^ 2 * CinvX
+ * + (y - centerY) ^ 2 * CinvY))
+ * In this class we assumes amplitude Y is normalized to 1, so
+ * amplitude X is real amplitude X relative to amplitude Y.
+ *
+ * @param {!goog.math.Coordinate} center .
+ * @param {number} covariance .
+ * @param {!number} amplitude Amplitude on dimension X of the distribution. The
+ * estimator assumes amplitude on dimension Y is 1, so this value is real
+ * amplitude X relative to amplitude Y.
+ * @constructor
+ */
+i18n.input.chrome.inputview.elements.content.GaussianEstimator = function(
+ center, covariance, amplitude) {
+ /**
+ * The center point.
+ *
+ * @private {!goog.math.Coordinate}
+ */
+ this.center_ = center;
+
+ /**
+ * The CinvX.
+ *
+ * @private {number}
+ */
+ this.cinvX_ = 1 / (amplitude * covariance);
+
+ /**
+ * The CinvY.
+ *
+ * @private {number}
+ */
+ this.cinvY_ = 1 / covariance;
+
+ /**
+ * The Norm in log space.
+ *
+ * @private {number}
+ */
+ this.logNorm_ = Math.log(1 / (2 * Math.PI * Math.sqrt(amplitude *
+ covariance * covariance)));
+};
+var GaussianEstimator = i18n.input.chrome.inputview.elements.content.
+ GaussianEstimator;
+
+
+/**
+ * Estimates the possibility in log space.
+ *
+ * @param {number} x .
+ * @param {number} y .
+ */
+GaussianEstimator.prototype.estimateInLogSpace = function(x, y) {
+ var dx = x - this.center_.x;
+ var dy = y - this.center_.y;
+ var exponent = this.cinvX_ * dx * dx + this.cinvY_ * dy * dy;
+ return this.logNorm_ + (-0.5) * exponent;
+};
+
+}); // goog.scope

Powered by Google App Engine
This is Rietveld 408576698