154{
155 typedef typename SB::Integer
Integer;
156 typedef typename SB::Quotient Quotient;
157 typedef typename SB::Fraction Fraction;
159 typedef typename MyPattern::Vector2I Vector2I;
160 unsigned int nbok = 0;
161 unsigned int nb = 0;
164 MyPattern pattern( p*6, q*6 );
166
167
168 trace.
beginBlock (
"Testing block: Smallest covering subpatterns of ODD pattern." );
169 MyPattern pat_odd( 5, 12 );
170 trace.
info() <<
"ODD " << pat_odd <<
" " << pat_odd.rE() << endl;
171 MyPattern sp;
172 Quotient np;
173 Vector2I start;
174
175
176 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
177 0, 17 );
178 trace.
info() <<
"sub(0,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
179 ++nb; nbok += sp.slope() == SB::fraction( 5, 12 ) ? 1 : 0;
180 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
181 1, 17 );
182 trace.
info() <<
"sub(1,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
183 ++nb; nbok += sp.slope() == SB::fraction( 5, 12 ) ? 1 : 0;
184 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
185 7, 17 );
186 trace.
info() <<
"sub(7,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
187 ++nb; nbok += sp.slope() == SB::fraction( 3, 7 ) ? 1 : 0;
188 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
189 8, 17 );
190 trace.
info() <<
"sub(8,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
191 ++nb; nbok += sp.slope() == SB::fraction( 3, 7 ) ? 1 : 0;
192 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
193 13, 17 );
194 trace.
info() <<
"sub(13,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
195 ++nb; nbok += sp.slope() == SB::fraction( 3, 7 ) ? 1 : 0;
196 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
197 14, 17 );
198 trace.
info() <<
"sub(14,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
199 ++nb; nbok += sp.slope() == SB::fraction( 1, 2 ) ? 1 : 0;
200 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
201 15, 17 );
202 trace.
info() <<
"sub(15,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
203 ++nb; nbok += sp.slope() == SB::fraction( 1, 2 ) ? 1 : 0;
204
205 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") covering left Subpatterns." << endl;
206
207
208 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
209 0, 16 );
210 trace.
info() <<
"sub(0,16) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
211 ++nb; nbok += sp.slope() == SB::fraction( 5, 12 ) ? 1 : 0;
212 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
213 0, 15 );
214 trace.
info() <<
"sub(0,15) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
215 ++nb; nbok += sp.slope() == SB::fraction( 5, 12 ) ? 1 : 0;
216 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
217 0, 14 );
218 trace.
info() <<
"sub(0,14) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
219 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 2 ? 1 : 0;
220 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
221 0, 8 );
222 trace.
info() <<
"sub(0,8) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
223 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 2 ? 1 : 0;
224 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
225 0, 7 );
226 trace.
info() <<
"sub(0,7) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
227 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 1 ? 1 : 0;
228 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
229 0, 1 );
230 trace.
info() <<
"sub(0,1) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
231 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 1 ? 1 : 0;
232
233 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") covering right Subpatterns." << endl;
234
235
236 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
237 1, 16 );
238 trace.
info() <<
"sub(1,16) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
239 ++nb; nbok += sp.slope() == SB::fraction( 5, 12 ) ? 1 : 0;
240 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
241 2, 14 );
242 trace.
info() <<
"sub(2,14) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
243 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 2 ? 1 : 0;
244 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
245 7, 15 );
246 trace.
info() <<
"sub(7,15) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
247 ++nb; nbok += sp.slope() == SB::fraction( 3, 7 ) && np == 1 ? 1 : 0;
248 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
249 7, 14 );
250 trace.
info() <<
"sub(7,14) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
251 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 1 ? 1 : 0;
252 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
253 3, 6 );
254 trace.
info() <<
"sub(3,6) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
255 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 1 ? 1 : 0;
256 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
257 6, 8 );
258 trace.
info() <<
"sub(6,8) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
259 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 2 ? 1 : 0;
260 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
261 8, 12 );
262 trace.
info() <<
"sub(8,12) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
263 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 1 ? 1 : 0;
264 pat_odd.getSmallestCoveringSubpattern( sp, np, start,
265 15, 16 );
266 trace.
info() <<
"sub(15,16) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
267 ++nb; nbok += sp.slope() == SB::fraction( 1, 2 ) && np == 1 ? 1 : 0;
268
269 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") covering middle Subpatterns." << endl;
271
272
273 trace.
beginBlock (
"Testing block: Smallest covering subpatterns of EVEN pattern." );
274 MyPattern pat_even( 12, 17 );
275 trace.
info() <<
"EVEN " << pat_even <<
" " << pat_even.rE() << endl;
276
277
278 pat_even.getSmallestCoveringSubpattern( sp, np, start,
279 0, 29 );
280 trace.
info() <<
"sub(0,29) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
281 ++nb; nbok += sp.slope() == SB::fraction( 12, 17 ) ? 1 : 0;
282 pat_even.getSmallestCoveringSubpattern( sp, np, start,
283 0, 25 );
284 trace.
info() <<
"sub(0,25) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
285 ++nb; nbok += sp.slope() == SB::fraction( 12, 17 ) ? 1 : 0;
286 pat_even.getSmallestCoveringSubpattern( sp, np, start,
287 0, 17 );
288 trace.
info() <<
"sub(0,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
289 ++nb; nbok += sp.slope() == SB::fraction( 7, 10 ) ? 1 : 0;
290 pat_even.getSmallestCoveringSubpattern( sp, np, start,
291 0, 6 );
292 trace.
info() <<
"sub(0,6) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
293 ++nb; nbok += sp.slope() == SB::fraction( 7, 10 ) ? 1 : 0;
294 pat_even.getSmallestCoveringSubpattern( sp, np, start,
295 0, 5 );
296 trace.
info() <<
"sub(0,5) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
297 ++nb; nbok += sp.slope() == SB::fraction( 2, 3 ) ? 1 : 0;
298 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") covering left Subpatterns." << endl;
299
300
301 pat_even.getSmallestCoveringSubpattern( sp, np, start,
302 4, 29 );
303 trace.
info() <<
"sub(4,29) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
304 ++nb; nbok += sp.slope() == SB::fraction( 12, 17 ) ? 1 : 0;
305 pat_even.getSmallestCoveringSubpattern( sp, np, start,
306 5, 29 );
307 trace.
info() <<
"sub(5,29) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
308 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 2 ? 1 : 0;
309 pat_even.getSmallestCoveringSubpattern( sp, np, start,
310 16, 29 );
311 trace.
info() <<
"sub(16,29) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
312 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 2 ? 1 : 0;
313 pat_even.getSmallestCoveringSubpattern( sp, np, start,
314 17, 29 );
315 trace.
info() <<
"sub(17,29) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
316 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 1 ? 1 : 0;
317 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") covering right Subpatterns." << endl;
318
319
320 pat_even.getSmallestCoveringSubpattern( sp, np, start,
321 1, 27 );
322 trace.
info() <<
"sub(1,27) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
323 ++nb; nbok += sp.slope() == SB::fraction( 12, 17 ) ? 1 : 0;
324 pat_even.getSmallestCoveringSubpattern( sp, np, start,
325 5, 24 );
326 trace.
info() <<
"sub(5,24) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
327 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 2 ? 1 : 0;
328 pat_even.getSmallestCoveringSubpattern( sp, np, start,
329 4, 17 );
330 trace.
info() <<
"sub(4,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
331 ++nb; nbok += sp.slope() == SB::fraction( 7, 10 ) && np == 1 ? 1 : 0;
332 pat_even.getSmallestCoveringSubpattern( sp, np, start,
333 5, 17 );
334 trace.
info() <<
"sub(5,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
335 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 1 ? 1 : 0;
336 pat_even.getSmallestCoveringSubpattern( sp, np, start,
337 7, 12 );
338 trace.
info() <<
"sub(7,12) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
339 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 1 ? 1 : 0;
340 pat_even.getSmallestCoveringSubpattern( sp, np, start,
341 1, 4 );
342 trace.
info() <<
"sub(1,4) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
343 ++nb; nbok += sp.slope() == SB::fraction( 2, 3 ) && np == 1 ? 1 : 0;
344 pat_even.getSmallestCoveringSubpattern( sp, np, start,
345 18, 25 );
346 trace.
info() <<
"sub(18,20) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
347 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 1 ? 1 : 0;
348 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") covering middle Subpatterns." << endl;
350
351
352
353
354 trace.
beginBlock (
"Testing block: greatest included subpatterns of ODD pattern." );
355 trace.
info() <<
"ODD " << pat_odd <<
" " << pat_odd.rE() << endl;
356
357
358 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
359 0, 17 );
360 trace.
info() <<
"sub(0,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
361 ++nb; nbok += sp.slope() == SB::fraction( 5, 12 ) ? 1 : 0;
362 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
363 1, 17 );
364 trace.
info() <<
"sub(1,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
365 ++nb; nbok += sp.slope() == SB::fraction( 3, 7 ) ? 1 : 0;
366 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
367 7, 17 );
368 trace.
info() <<
"sub(7,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
369 ++nb; nbok += sp.slope() == SB::fraction( 3, 7 ) ? 1 : 0;
370 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
371 8, 17 );
372 trace.
info() <<
"sub(8,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
373 ++nb; nbok += sp.slope() == SB::fraction( 1, 2 ) ? 1 : 0;
374 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
375 13, 17 );
376 trace.
info() <<
"sub(13,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
377 ++nb; nbok += sp.slope() == SB::fraction( 1, 2 ) ? 1 : 0;
378 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
379 14, 17 );
380 trace.
info() <<
"sub(14,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
381 ++nb; nbok += sp.slope() == SB::fraction( 1, 2 ) ? 1 : 0;
382 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
383 15, 17 );
384 trace.
info() <<
"sub(15,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
385 ++nb; nbok += sp.slope() == Fraction() ? 1 : 0;
386
387 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") covering left Subpatterns." << endl;
388
389
390 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
391 0, 15 );
392 trace.
info() <<
"sub(0,15) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
393 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 2 ? 1 : 0;
394 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
395 0, 14 );
396 trace.
info() <<
"sub(0,14) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
397 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 2 ? 1 : 0;
398 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
399 0, 13 );
400 trace.
info() <<
"sub(0,13) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
401 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 1 ? 1 : 0;
402 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
403 0, 7 );
404 trace.
info() <<
"sub(0,7) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
405 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 1 ? 1 : 0;
406 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
407 0, 6 );
408 trace.
info() <<
"sub(0,6) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
409 ++nb; nbok += sp.slope() == Fraction() ? 1 : 0;
410 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
411 0, 1 );
412 trace.
info() <<
"sub(0,1) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
413 ++nb; nbok += sp.slope() == Fraction() ? 1 : 0;
414
415 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") covering right Subpatterns." << endl;
416
417
418 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
419 1, 16 );
420 trace.
info() <<
"sub(1,16) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
421 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) ? 1 : 0;
422 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
423 2, 14 );
424 trace.
info() <<
"sub(2,14) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
425 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 1 ? 1 : 0;
426 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
427 7, 15 );
428 trace.
info() <<
"sub(7,15) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
429 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 1 ? 1 : 0;
430 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
431 7, 14 );
432 trace.
info() <<
"sub(7,14) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
433 ++nb; nbok += sp.slope() == SB::fraction( 2, 5 ) && np == 1 ? 1 : 0;
434 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
435 3, 6 );
436 trace.
info() <<
"sub(3,6) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
437 ++nb; nbok += sp.slope() == Fraction() ? 1 : 0;
438 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
439 6, 8 );
440 trace.
info() <<
"sub(6,8) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
441 ++nb; nbok += sp.slope() == Fraction() ? 1 : 0;
442 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
443 8, 12 );
444 trace.
info() <<
"sub(8,12) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
445 ++nb; nbok += sp.slope() == Fraction() ? 1 : 0;
446 pat_odd.getGreatestIncludedSubpattern( sp, np, start,
447 15, 16 );
448 trace.
info() <<
"sub(15,16) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
449 ++nb; nbok += sp.slope() == Fraction() ? 1 : 0;
450
451 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") covering middle Subpatterns." << endl;
453
454
455 trace.
beginBlock (
"Testing block: Greatest included subpatterns of EVEN pattern." );
456 trace.
info() <<
"EVEN " << pat_even <<
" " << pat_even.rE() << endl;
457
458
459 pat_even.getGreatestIncludedSubpattern( sp, np, start,
460 0, 29 );
461 trace.
info() <<
"sub(0,29) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
462 ++nb; nbok += sp.slope() == SB::fraction( 12, 17 ) ? 1 : 0;
463 pat_even.getGreatestIncludedSubpattern( sp, np, start,
464 0, 25 );
465 trace.
info() <<
"sub(0,25) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
466 ++nb; nbok += sp.slope() == SB::fraction( 7, 10 ) ? 1 : 0;
467 pat_even.getGreatestIncludedSubpattern( sp, np, start,
468 0, 17 );
469 trace.
info() <<
"sub(0,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
470 ++nb; nbok += sp.slope() == SB::fraction( 7, 10 ) ? 1 : 0;
471 pat_even.getGreatestIncludedSubpattern( sp, np, start,
472 0, 16 );
473 trace.
info() <<
"sub(0,16) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
474 ++nb; nbok += sp.slope() == SB::fraction( 2, 3 ) ? 1 : 0;
475 pat_even.getGreatestIncludedSubpattern( sp, np, start,
476 0, 6 );
477 trace.
info() <<
"sub(0,6) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
478 ++nb; nbok += sp.slope() == SB::fraction( 2, 3 ) ? 1 : 0;
479 pat_even.getGreatestIncludedSubpattern( sp, np, start,
480 0, 5 );
481 trace.
info() <<
"sub(0,5) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
482 ++nb; nbok += sp.slope() == SB::fraction( 2, 3 ) ? 1 : 0;
483 pat_even.getGreatestIncludedSubpattern( sp, np, start,
484 0, 4 );
485 trace.
info() <<
"sub(0,4) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
486 ++nb; nbok += sp.slope() == Fraction() ? 1 : 0;
487 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") covering left Subpatterns." << endl;
488
489
490 pat_even.getGreatestIncludedSubpattern( sp, np, start,
491 4, 29 );
492 trace.
info() <<
"sub(4,29) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
493 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 2 ? 1 : 0;
494 pat_even.getGreatestIncludedSubpattern( sp, np, start,
495 5, 29 );
496 trace.
info() <<
"sub(5,29) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
497 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 2 ? 1 : 0;
498 pat_even.getGreatestIncludedSubpattern( sp, np, start,
499 16, 29 );
500 trace.
info() <<
"sub(16,29) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
501 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 1 ? 1 : 0;
502 pat_even.getGreatestIncludedSubpattern( sp, np, start,
503 17, 29 );
504 trace.
info() <<
"sub(17,29) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
505 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 1 ? 1 : 0;
506 pat_even.getGreatestIncludedSubpattern( sp, np, start,
507 18, 29 );
508 trace.
info() <<
"sub(18,29) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
509 ++nb; nbok += sp.slope() == Fraction() ? 1 : 0;
510 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") covering right Subpatterns." << endl;
511
512
513 pat_even.getGreatestIncludedSubpattern( sp, np, start,
514 1, 27 );
515 trace.
info() <<
"sub(1,27) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
516 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 1 ? 1 : 0;
517 pat_even.getGreatestIncludedSubpattern( sp, np, start,
518 5, 24 );
519 trace.
info() <<
"sub(5,24) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
520 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 1 ? 1 : 0;
521 pat_even.getGreatestIncludedSubpattern( sp, np, start,
522 4, 17 );
523 trace.
info() <<
"sub(4,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
524 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 1 ? 1 : 0;
525 pat_even.getGreatestIncludedSubpattern( sp, np, start,
526 5, 17 );
527 trace.
info() <<
"sub(5,17) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
528 ++nb; nbok += sp.slope() == SB::fraction( 5, 7 ) && np == 1 ? 1 : 0;
529 pat_even.getGreatestIncludedSubpattern( sp, np, start,
530 7, 16 );
531 trace.
info() <<
"sub(5,16) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
532 ++nb; nbok += sp.slope() == Fraction() ? 1 : 0;
533 pat_even.getGreatestIncludedSubpattern( sp, np, start,
534 1, 4 );
535 trace.
info() <<
"sub(1,4) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
536 ++nb; nbok += sp.slope() == Fraction() ? 1 : 0;
537 pat_even.getGreatestIncludedSubpattern( sp, np, start,
538 18, 25 );
539 trace.
info() <<
"sub(18,20) = " << sp <<
" " << sp.rE() <<
"^" << np << endl;
540 ++nb; nbok += sp.slope() == Fraction() ? 1 : 0;
541 trace.
info() <<
"(" << nbok <<
"/" << nb <<
") covering middle Subpatterns." << endl;
543
544 trace.
info() <<
"Odd pattern " << pat_odd << endl;
545 trace.
info() <<
" U(0)=" << pat_odd.U( 0 )
546 << " L(0)=" << pat_odd.L( 0 )
547 << " U(1)=" << pat_odd.U( 1 )
548 << " L(1)=" << pat_odd.L( 1 ) << endl;
549
550 trace.
info() <<
"Even pattern " << pat_even << endl;
551 trace.
info() <<
" U(0)=" << pat_even.U( 0 )
552 << " L(0)=" << pat_even.L( 0 )
553 << " U(1)=" << pat_even.U( 1 )
554 << " L(1)=" << pat_even.L( 1 ) << endl;
555
556 return nbok == nb;
557}
Aim: This class represents a pattern, i.e. the path between two consecutive upper leaning points on a...