| Index: tracing/tracing/base/piecewise_linear_function.html
|
| diff --git a/tracing/tracing/base/piecewise_linear_function.html b/tracing/tracing/base/piecewise_linear_function.html
|
| deleted file mode 100644
|
| index f4cab6f342637f10c157c3b927a4415d469d95aa..0000000000000000000000000000000000000000
|
| --- a/tracing/tracing/base/piecewise_linear_function.html
|
| +++ /dev/null
|
| @@ -1,143 +0,0 @@
|
| -<!DOCTYPE html>
|
| -<!--
|
| -Copyright 2016 The Chromium Authors. All rights reserved.
|
| -Use of this source code is governed by a BSD-style license that can be
|
| -found in the LICENSE file.
|
| --->
|
| -
|
| -<link rel="import" href="/tracing/base/base.html">
|
| -
|
| -<script>
|
| -'use strict';
|
| -
|
| -tr.exportTo('tr.b', function() {
|
| - var PERCENTILE_PRECISION = 1e-7;
|
| - /**
|
| - * A function that consists of linear pieces.
|
| - * See https://en.wikipedia.org/wiki/Piecewise_linear_function.
|
| - * @constructor
|
| - */
|
| - function PiecewiseLinearFunction() {
|
| - this.pieces = [];
|
| - }
|
| -
|
| - PiecewiseLinearFunction.prototype = {
|
| - /**
|
| - * Push a linear piece defined by linear interpolation between.
|
| - * (x1, y1) and (x2, y2).
|
| - * Pieces must be pushed in the order of increasing x coordinate.
|
| - */
|
| - push: function(x1, y1, x2, y2) {
|
| - if (x1 >= x2)
|
| - throw new Error('Invalid segment');
|
| - if (this.pieces.length > 0 &&
|
| - this.pieces[this.pieces.length - 1].x2 > x1) {
|
| - throw new Error('Potentially overlapping segments');
|
| - }
|
| - if (x1 < x2)
|
| - this.pieces.push(new Piece(x1, y1, x2, y2));
|
| - },
|
| -
|
| - /**
|
| - * Returns the size of the set A such that for all x in A: f(x) < y.
|
| - */
|
| - partBelow: function(y) {
|
| - return this.pieces.reduce((acc, p) => (acc + p.partBelow(y)), 0);
|
| - },
|
| -
|
| - get min() {
|
| - return this.pieces.reduce((acc, p) => Math.min(acc, p.min), Infinity);
|
| - },
|
| -
|
| - get max() {
|
| - return this.pieces.reduce((acc, p) => Math.max(acc, p.max), -Infinity);
|
| - },
|
| -
|
| - get average() {
|
| - var weightedSum = 0;
|
| - var totalWeight = 0;
|
| - this.pieces.forEach(function(piece) {
|
| - weightedSum += piece.width * piece.average;
|
| - totalWeight += piece.width;
|
| - });
|
| - if (totalWeight === 0)
|
| - return 0;
|
| - return weightedSum / totalWeight;
|
| - },
|
| -
|
| - /**
|
| - * Returns the minimum possible value y such that the percentage of x points
|
| - * that have f(x) <= y is approximately equal to the given |percent|.
|
| - */
|
| - percentile: function(percent) {
|
| - if (!(percent >= 0 && percent <= 1))
|
| - throw new Error('percent must be [0,1]');
|
| - var lower = this.min;
|
| - var upper = this.max;
|
| - var total = this.partBelow(upper);
|
| - if (total === 0)
|
| - return 0;
|
| - while (upper - lower > PERCENTILE_PRECISION) {
|
| - var middle = (lower + upper) / 2;
|
| - var below = this.partBelow(middle);
|
| - if (below / total < percent)
|
| - lower = middle;
|
| - else
|
| - upper = middle;
|
| - }
|
| - return (lower + upper) / 2;
|
| - }
|
| - };
|
| -
|
| - /**
|
| - * A linear segment from (x1, y1) to (x2, y2).
|
| - * @constructor
|
| - */
|
| - function Piece(x1, y1, x2, y2) {
|
| - this.x1 = x1;
|
| - this.y1 = y1;
|
| - this.x2 = x2;
|
| - this.y2 = y2;
|
| - }
|
| -
|
| - Piece.prototype = {
|
| - /**
|
| - * The total length of all x points such that f(x) < y.
|
| - * More formally:
|
| - * max(x2 - x1) such that for all x in [x1 .. x2]: f(x) < y.
|
| - */
|
| - partBelow: function(y) {
|
| - var width = this.width;
|
| - if (width === 0)
|
| - return 0;
|
| - var minY = this.min;
|
| - var maxY = this.max;
|
| - if (y >= maxY)
|
| - return width;
|
| - if (y < minY)
|
| - return 0;
|
| - return (y - minY) / (maxY - minY) * width;
|
| - },
|
| -
|
| - get min() {
|
| - return Math.min(this.y1, this.y2);
|
| - },
|
| -
|
| - get max() {
|
| - return Math.max(this.y1, this.y2);
|
| - },
|
| -
|
| - get average() {
|
| - return (this.y1 + this.y2) / 2;
|
| - },
|
| -
|
| - get width() {
|
| - return this.x2 - this.x1;
|
| - }
|
| - };
|
| -
|
| - return {
|
| - PiecewiseLinearFunction,
|
| - };
|
| -});
|
| -</script>
|
|
|