Blame ETL/test/spline.cpp

darco b3016b
/*! ========================================================================
darco b3016b
** Extended Template and Library Test Suite
darco b3016b
** Spline Curve Test
dooglus 36d01e
** $Id$
darco b3016b
**
darco b3016b
** Copyright (c) 2002 Robert B. Quattlebaum Jr.
Carlos Lopez 42fd7a
** Copyright (c) 2010 Nikita Kitaev
darco b3016b
**
darco b3016b
** This package is free software; you can redistribute it and/or
darco b3016b
** modify it under the terms of the GNU General Public License as
darco b3016b
** published by the Free Software Foundation; either version 2 of
darco b3016b
** the License, or (at your option) any later version.
darco b3016b
**
darco b3016b
** This package is distributed in the hope that it will be useful,
darco b3016b
** but WITHOUT ANY WARRANTY; without even the implied warranty of
darco b3016b
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
darco b3016b
** General Public License for more details.
darco b3016b
**
darco b3016b
** === N O T E S ===========================================================
darco b3016b
**
darco b3016b
** ========================================================================= */
darco b3016b
darco b3016b
/* === H E A D E R S ======================================================= */
darco b3016b
darco b3016b
#include <etl spline=""></etl>
darco b3016b
#include <etl angle=""></etl>
darco b3016b
#include <etl clock=""></etl>
darco b3016b
#include <etl calculus=""></etl>
darco b3016b
#include <stdio.h></stdio.h>
darco b3016b
darco b3016b
/* === M A C R O S ========================================================= */
darco b3016b
darco b3016b
using namespace etl;
darco b3016b
darco b3016b
/* === C L A S S E S ======================================================= */
darco b3016b
darco b3016b
darco b3016b
/* === P R O C E D U R E S ================================================= */
darco b3016b
darco b3016b
int bspline_basic_test(void)
darco b3016b
{
darco b3016b
	int ret=0;
darco b3016b
	float f;
dooglus cee594
darco b3016b
	bspline<float> BSpline;</float>
pabs 38d8fb
	etl::clock timer;
f6dcd1
	double t = 0.0;
dooglus cee594
Nikita Kitaev 545d85
	BSpline.cpoints().insert(BSpline.cpoints().end(), 0.0);
Nikita Kitaev 545d85
	BSpline.cpoints().insert(BSpline.cpoints().end(), -1.0);
Nikita Kitaev 545d85
	BSpline.cpoints().insert(BSpline.cpoints().end(), 0.0);
Nikita Kitaev 545d85
	BSpline.cpoints().insert(BSpline.cpoints().end(), 1.0);
Nikita Kitaev 545d85
	BSpline.cpoints().insert(BSpline.cpoints().end(), 0.0);
dooglus cee594
darco b3016b
	BSpline.set_m(4);
darco b3016b
	BSpline.reset_knots();
dooglus cee594
darco b3016b
	integral<bspline<float> > inte(BSpline);</bspline<float>
darco b3016b
dooglus cee594
darco b3016b
	/*
darco b3016b
	for(f=0.0;f<1.001;f+=0.05)
darco b3016b
		fprintf(stderr,"BSpline(%f)= %f\n",f,BSpline(f));
darco b3016b
	*/
dooglus cee594
darco b3016b
	fprintf(stderr,"integral of BSpline() on [0,1] = %f\n",inte(0,1.0));
dooglus cee594
dooglus cee594
darco b3016b
	for(f=0.0f,timer.reset();f<1.001f;f+=0.000005f)
darco b3016b
	{
darco b3016b
		t+=BSpline(f)+BSpline(f+0.1f);
darco b3016b
		t+=BSpline(f)+BSpline(f+0.1f);
darco b3016b
		t+=BSpline(f)+BSpline(f+0.1f);
darco b3016b
		t+=BSpline(f)+BSpline(f+0.1f);
darco b3016b
		t+=BSpline(f)+BSpline(f+0.1f);
darco b3016b
		t+=BSpline(f)+BSpline(f+0.1f);
darco b3016b
		t+=BSpline(f)+BSpline(f+0.1f);
darco b3016b
		t+=BSpline(f)+BSpline(f+0.1f);
darco b3016b
		t+=BSpline(f)+BSpline(f+0.1f);
darco b3016b
		t+=BSpline(f)+BSpline(f+0.1f);
darco b3016b
		t+=BSpline(f)+BSpline(f+0.1f);
darco b3016b
		t+=BSpline(f)+BSpline(f+0.1f);
darco b3016b
	}
darco b3016b
	t=timer();
dooglus cee594
darco b3016b
	fprintf(stderr,"BSpline time=%f milliseconds\n",t*1000);
darco b3016b
	return ret;
darco b3016b
}
darco b3016b
darco b3016b
/* === E N T R Y P O I N T ================================================= */
darco b3016b
darco b3016b
int main()
darco b3016b
{
darco b3016b
	int error=0;
dooglus cee594
darco b3016b
	error+=bspline_basic_test();
dooglus cee594
darco b3016b
	return error;
darco b3016b
}
darco b3016b