summaryrefslogtreecommitdiff
path: root/utils/codegen/ipc
diff options
context:
space:
mode:
Diffstat (limited to 'utils/codegen/ipc')
0 files changed, 0 insertions, 0 deletions
ref='#n40'>40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
/* SPDX-License-Identifier: BSD-2-Clause */
/*
 * Copyright (C) 2019, Raspberry Pi Ltd
 *
 * histogram.cpp - histogram calculations
 */
#include <math.h>
#include <stdio.h>

#include "histogram.h"

using namespace RPiController;

uint64_t Histogram::cumulativeFreq(double bin) const
{
	if (bin <= 0)
		return 0;
	else if (bin >= bins())
		return total();
	int b = (int)bin;
	return cumulative_[b] +
	       (bin - b) * (cumulative_[b + 1] - cumulative_[b]);
}

double Histogram::quantile(double q, int first, int last) const
{
	if (first == -1)
		first = 0;
	if (last == -1)
		last = cumulative_.size() - 2;
	assert(first <= last);
	uint64_t items = q * total();
	while (first < last) /* binary search to find the right bin */
	{
		int middle = (first + last) / 2;
		if (cumulative_[middle + 1] > items)