1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml">
4
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
<title>tesseract: /usr/local/google/home/jbreiden/tesseract-ocr-read-only/ccstruct/statistc.h File Reference</title>
8
<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
<link href="doxygen.css" rel="stylesheet" type="text/css" />
10
<link href="navtree.css" rel="stylesheet" type="text/css"/>
11
<script type="text/javascript" src="jquery.js"></script>
12
<script type="text/javascript" src="resize.js"></script>
13
<script type="text/javascript" src="navtree.js"></script>
14
<script type="text/javascript">
15
$(document).ready(initResizable);
17
<link href="search/search.css" rel="stylesheet" type="text/css"/>
18
<script type="text/javascript" src="search/search.js"></script>
19
<script type="text/javascript">
20
$(document).ready(function() { searchBox.OnSelectItem(0); });
25
<div id="top"><!-- do not remove this div! -->
29
<table cellspacing="0" cellpadding="0">
31
<tr style="height: 56px;">
34
<td style="padding-left: 0.5em;">
35
<div id="projectname">tesseract
36
 <span id="projectnumber">3.03</span>
48
<!-- Generated by Doxygen 1.7.6.1 -->
49
<script type="text/javascript">
50
var searchBox = new SearchBox("searchBox", "search",false,'Search');
52
<div id="navrow1" class="tabs">
54
<li><a href="index.html"><span>Main Page</span></a></li>
55
<li><a href="pages.html"><span>Related Pages</span></a></li>
56
<li><a href="modules.html"><span>Modules</span></a></li>
57
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
58
<li><a href="annotated.html"><span>Classes</span></a></li>
59
<li class="current"><a href="files.html"><span>Files</span></a></li>
61
<div id="MSearchBox" class="MSearchBoxInactive">
63
<img id="MSearchSelect" src="search/mag_sel.png"
64
onmouseover="return searchBox.OnSearchSelectShow()"
65
onmouseout="return searchBox.OnSearchSelectHide()"
67
<input type="text" id="MSearchField" value="Search" accesskey="S"
68
onfocus="searchBox.OnSearchFieldFocus(true)"
69
onblur="searchBox.OnSearchFieldFocus(false)"
70
onkeyup="searchBox.OnSearchFieldChange(event)"/>
71
</span><span class="right">
72
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
78
<div id="navrow2" class="tabs2">
80
<li><a href="files.html"><span>File List</span></a></li>
81
<li><a href="globals.html"><span>File Members</span></a></li>
85
<div id="side-nav" class="ui-resizable side-nav-resizable">
87
<div id="nav-tree-contents">
90
<div id="splitbar" style="-moz-user-select:none;"
91
class="ui-resizable-handle">
94
<script type="text/javascript">
95
initNavTree('a00798.html','');
97
<div id="doc-content">
100
<a href="#nested-classes">Classes</a> |
101
<a href="#func-members">Functions</a> </div>
102
<div class="headertitle">
103
<div class="title">/usr/local/google/home/jbreiden/tesseract-ocr-read-only/ccstruct/statistc.h File Reference</div> </div>
105
<div class="contents">
106
<div class="textblock"><code>#include <stdio.h></code><br/>
107
<code>#include "<a class="el" href="a00831_source.html">host.h</a>"</code><br/>
108
<code>#include "<a class="el" href="a00834_source.html">kdpair.h</a>"</code><br/>
109
<code>#include "<a class="el" href="a01203_source.html">scrollview.h</a>"</code><br/>
111
<p><a href="a00798_source.html">Go to the source code of this file.</a></p>
112
<table class="memberdecls">
113
<tr><td colspan="2"><h2><a name="nested-classes"></a>
114
Classes</h2></td></tr>
115
<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00556.html">STATS</a></td></tr>
116
<tr><td colspan="2"><h2><a name="func-members"></a>
117
Functions</h2></td></tr>
118
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00798.html#ab531cf8bc727a6e03af3a6cc10b4cd7a">choose_nth_item</a> (<a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> index, float *array, <a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> <a class="el" href="a01043.html#acd4ea858d7133e40518e0832ff9d94b2">count</a>)</td></tr>
119
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00798.html#a71a0ba1133f24e41c7123bc460798744">choose_nth_item</a> (<a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> index, void *array, <a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> <a class="el" href="a01043.html#acd4ea858d7133e40518e0832ff9d94b2">count</a>, size_t size, int(*compar)(const void *, const void *))</td></tr>
120
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00798.html#ab483724220813ab89951f7c264dcdd26">swap_entries</a> (void *array, size_t size, <a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> index1, <a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> index2)</td></tr>
122
<hr/><h2>Function Documentation</h2>
123
<a class="anchor" id="ab531cf8bc727a6e03af3a6cc10b4cd7a"></a><!-- doxytag: member="statistc.h::choose_nth_item" ref="ab531cf8bc727a6e03af3a6cc10b4cd7a" args="(inT32 index, float *array, inT32 count)" -->
124
<div class="memitem">
125
<div class="memproto">
126
<table class="memname">
128
<td class="memname"><a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> <a class="el" href="a00798.html#a71a0ba1133f24e41c7123bc460798744">choose_nth_item</a> </td>
130
<td class="paramtype"><a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> </td>
131
<td class="paramname"><em>index</em>, </td>
134
<td class="paramkey"></td>
136
<td class="paramtype">float * </td>
137
<td class="paramname"><em>array</em>, </td>
140
<td class="paramkey"></td>
142
<td class="paramtype"><a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> </td>
143
<td class="paramname"><em>count</em> </td>
154
<p>Definition at line <a class="el" href="a00797_source.html#l00640">640</a> of file <a class="el" href="a00797_source.html">statistc.cpp</a>.</p>
155
<div class="fragment"><pre class="fragment"> {
156
<a class="code" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> next_sample; <span class="comment">// next one to do</span>
157
<a class="code" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> next_lesser; <span class="comment">// space for new</span>
158
<a class="code" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> prev_greater; <span class="comment">// last one saved</span>
159
<a class="code" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> equal_count; <span class="comment">// no of equal ones</span>
160
<span class="keywordtype">float</span> pivot; <span class="comment">// proposed median</span>
161
<span class="keywordtype">float</span> <a class="code" href="a00525.html">sample</a>; <span class="comment">// current sample</span>
163
<span class="keywordflow">if</span> (<a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a> <= 1)
164
<span class="keywordflow">return</span> 0;
165
<span class="keywordflow">if</span> (<a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a> == 2) {
166
<span class="keywordflow">if</span> (array[0] < array[1]) {
167
<span class="keywordflow">return</span> index >= 1 ? 1 : 0;
169
<span class="keywordflow">else</span> {
170
<span class="keywordflow">return</span> index >= 1 ? 0 : 1;
173
<span class="keywordflow">else</span> {
174
<span class="keywordflow">if</span> (index < 0)
175
index = 0; <span class="comment">// ensure legal</span>
176
<span class="keywordflow">else</span> <span class="keywordflow">if</span> (index >= <a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a>)
177
index = <a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a> - 1;
178
equal_count = (<a class="code" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a>) (rand() % <a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a>);
179
pivot = array[equal_count];
180
<span class="comment">// fill gap</span>
181
array[equal_count] = array[0];
183
prev_greater = <a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a>;
185
<span class="keywordflow">for</span> (next_sample = 1; next_sample < prev_greater;) {
186
sample = array[next_sample];
187
<span class="keywordflow">if</span> (sample < pivot) {
188
<span class="comment">// shuffle</span>
189
array[next_lesser++] = sample;
192
<span class="keywordflow">else</span> <span class="keywordflow">if</span> (sample > pivot) {
194
<span class="comment">// juggle</span>
195
array[next_sample] = array[prev_greater];
196
array[prev_greater] = sample;
198
<span class="keywordflow">else</span> {
203
<span class="keywordflow">for</span> (next_sample = next_lesser; next_sample < prev_greater;)
204
array[next_sample++] = pivot;
205
<span class="keywordflow">if</span> (index < next_lesser)
206
<span class="keywordflow">return</span> <a class="code" href="a00797.html#ab531cf8bc727a6e03af3a6cc10b4cd7a">choose_nth_item</a> (index, array, next_lesser);
207
<span class="keywordflow">else</span> <span class="keywordflow">if</span> (index < prev_greater)
208
<span class="keywordflow">return</span> next_lesser; <span class="comment">// in equal bracket</span>
209
<span class="keywordflow">else</span>
210
<span class="keywordflow">return</span> <a class="code" href="a00797.html#ab531cf8bc727a6e03af3a6cc10b4cd7a">choose_nth_item</a> (index - prev_greater,
211
array + prev_greater,
212
<a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a> - prev_greater) + prev_greater;
218
<a class="anchor" id="a71a0ba1133f24e41c7123bc460798744"></a><!-- doxytag: member="statistc.h::choose_nth_item" ref="a71a0ba1133f24e41c7123bc460798744" args="(inT32 index, void *array, inT32 count, size_t size, int(*compar)(const void *, const void *))" -->
219
<div class="memitem">
220
<div class="memproto">
221
<table class="memname">
223
<td class="memname"><a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> <a class="el" href="a00798.html#a71a0ba1133f24e41c7123bc460798744">choose_nth_item</a> </td>
225
<td class="paramtype"><a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> </td>
226
<td class="paramname"><em>index</em>, </td>
229
<td class="paramkey"></td>
231
<td class="paramtype">void * </td>
232
<td class="paramname"><em>array</em>, </td>
235
<td class="paramkey"></td>
237
<td class="paramtype"><a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> </td>
238
<td class="paramname"><em>count</em>, </td>
241
<td class="paramkey"></td>
243
<td class="paramtype">size_t </td>
244
<td class="paramname"><em>size</em>, </td>
247
<td class="paramkey"></td>
249
<td class="paramtype">int(*)(const void *, const void *) </td>
250
<td class="paramname"><em>compar</em> </td>
261
<p>Definition at line <a class="el" href="a00797_source.html#l00707">707</a> of file <a class="el" href="a00797_source.html">statistc.cpp</a>.</p>
262
<div class="fragment"><pre class="fragment"> {
263
<span class="keywordtype">int</span> result; <span class="comment">// of compar</span>
264
<a class="code" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> next_sample; <span class="comment">// next one to do</span>
265
<a class="code" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> next_lesser; <span class="comment">// space for new</span>
266
<a class="code" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> prev_greater; <span class="comment">// last one saved</span>
267
<a class="code" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> equal_count; <span class="comment">// no of equal ones</span>
268
<a class="code" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> pivot; <span class="comment">// proposed median</span>
270
<span class="keywordflow">if</span> (<a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a> <= 1)
271
<span class="keywordflow">return</span> 0;
272
<span class="keywordflow">if</span> (<a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a> == 2) {
273
<span class="keywordflow">if</span> (compar (array, (<span class="keywordtype">char</span> *) array + size) < 0) {
274
<span class="keywordflow">return</span> index >= 1 ? 1 : 0;
276
<span class="keywordflow">else</span> {
277
<span class="keywordflow">return</span> index >= 1 ? 0 : 1;
280
<span class="keywordflow">if</span> (index < 0)
281
index = 0; <span class="comment">// ensure legal</span>
282
<span class="keywordflow">else</span> <span class="keywordflow">if</span> (index >= <a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a>)
283
index = <a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a> - 1;
284
pivot = (<a class="code" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a>) (rand () % <a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a>);
285
<a class="code" href="a00797.html#ab483724220813ab89951f7c264dcdd26">swap_entries</a> (array, size, pivot, 0);
287
prev_greater = <a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a>;
289
<span class="keywordflow">for</span> (next_sample = 1; next_sample < prev_greater;) {
291
compar ((<span class="keywordtype">char</span> *) array + size * next_sample,
292
(<span class="keywordtype">char</span> *) array + size * next_lesser);
293
<span class="keywordflow">if</span> (result < 0) {
294
<a class="code" href="a00797.html#ab483724220813ab89951f7c264dcdd26">swap_entries</a> (array, size, next_lesser++, next_sample++);
295
<span class="comment">// shuffle</span>
297
<span class="keywordflow">else</span> <span class="keywordflow">if</span> (result > 0) {
299
<a class="code" href="a00797.html#ab483724220813ab89951f7c264dcdd26">swap_entries</a>(array, size, prev_greater, next_sample);
301
<span class="keywordflow">else</span> {
306
<span class="keywordflow">if</span> (index < next_lesser)
307
<span class="keywordflow">return</span> <a class="code" href="a00797.html#ab531cf8bc727a6e03af3a6cc10b4cd7a">choose_nth_item</a> (index, array, next_lesser, size, compar);
308
<span class="keywordflow">else</span> <span class="keywordflow">if</span> (index < prev_greater)
309
<span class="keywordflow">return</span> next_lesser; <span class="comment">// in equal bracket</span>
310
<span class="keywordflow">else</span>
311
<span class="keywordflow">return</span> <a class="code" href="a00797.html#ab531cf8bc727a6e03af3a6cc10b4cd7a">choose_nth_item</a> (index - prev_greater,
312
(<span class="keywordtype">char</span> *) array + size * prev_greater,
313
<a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a> - prev_greater, size,
314
compar) + prev_greater;
319
<a class="anchor" id="ab483724220813ab89951f7c264dcdd26"></a><!-- doxytag: member="statistc.h::swap_entries" ref="ab483724220813ab89951f7c264dcdd26" args="(void *array, size_t size, inT32 index1, inT32 index2)" -->
320
<div class="memitem">
321
<div class="memproto">
322
<table class="memname">
324
<td class="memname">void <a class="el" href="a00798.html#ab483724220813ab89951f7c264dcdd26">swap_entries</a> </td>
326
<td class="paramtype">void * </td>
327
<td class="paramname"><em>array</em>, </td>
330
<td class="paramkey"></td>
332
<td class="paramtype">size_t </td>
333
<td class="paramname"><em>size</em>, </td>
336
<td class="paramkey"></td>
338
<td class="paramtype"><a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> </td>
339
<td class="paramname"><em>index1</em>, </td>
342
<td class="paramkey"></td>
344
<td class="paramtype"><a class="el" href="a00831.html#aba1f582fd0168f3ff9225d8c90fa9eb8">inT32</a> </td>
345
<td class="paramname"><em>index2</em> </td>
356
<p>Definition at line <a class="el" href="a00797_source.html#l00768">768</a> of file <a class="el" href="a00797_source.html">statistc.cpp</a>.</p>
357
<div class="fragment"><pre class="fragment"> {
358
<span class="keywordtype">char</span> tmp;
359
<span class="keywordtype">char</span> *ptr1; <span class="comment">// to entries</span>
360
<span class="keywordtype">char</span> *ptr2;
361
<span class="keywordtype">size_t</span> <a class="code" href="a01042.html#acd4ea858d7133e40518e0832ff9d94b2">count</a>; <span class="comment">// of bytes</span>
363
ptr1 = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(array) + index1 * size;
364
ptr2 = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(array) + index2 * size;
365
<span class="keywordflow">for</span> (count = 0; count < size; count++) {
368
*ptr2++ = tmp; <span class="comment">// tedious!</span>
374
</div><!-- contents -->
376
<!-- window showing the filter options -->
377
<div id="MSearchSelectWindow"
378
onmouseover="return searchBox.OnSearchSelectShow()"
379
onmouseout="return searchBox.OnSearchSelectHide()"
380
onkeydown="return searchBox.OnSearchSelectKey(event)">
381
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Defines</a></div>
383
<!-- iframe showing the search results (closed by default) -->
384
<div id="MSearchResultsWindow">
385
<iframe src="javascript:void(0)" frameborder="0"
386
name="MSearchResults" id="MSearchResults">
390
<div id="nav-path" class="navpath">
392
<li class="navelem"><a class="el" href="a00798.html">statistc.h</a> </li>
394
<li class="footer">Generated on Mon Feb 3 2014 10:59:11 for tesseract by
395
<a href="http://www.doxygen.org/index.html">
396
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.6.1 </li>