|
Packit |
bc1512 |
#include <glib/gstdio.h>
|
|
Packit |
bc1512 |
#include <gegl.h>
|
|
Packit |
bc1512 |
#include <gegl-plugin.h>
|
|
Packit |
bc1512 |
#include <math.h>
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
static gfloat wrapped_sqrt (gfloat in,
|
|
Packit |
bc1512 |
gpointer data) /* we could have used the user data */
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
return sqrt (in);
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
static gfloat passthrough (gfloat in, gpointer data)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
return in;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
glong gegl_ticks (void);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#define ITERATIONS 10
|
|
Packit |
bc1512 |
#define SAMPLES 10000000
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
gint main (int argc, gchar **argv)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
gint i,j = 0;
|
|
Packit |
bc1512 |
gfloat val;
|
|
Packit |
bc1512 |
gfloat foo;
|
|
Packit |
bc1512 |
gdouble sum = 0;
|
|
Packit |
bc1512 |
gint count=0;
|
|
Packit |
bc1512 |
GeglLookup *lookup;
|
|
Packit |
bc1512 |
gint ticks;
|
|
Packit |
bc1512 |
gfloat *rand = g_malloc (SAMPLES * sizeof (gfloat));
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
for (i=0;i
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
rand[i]=g_random_double ();
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
lookup = gegl_lookup_new (wrapped_sqrt, NULL);
|
|
Packit |
bc1512 |
ticks = gegl_ticks ();
|
|
Packit |
bc1512 |
for (i=0;i
|
|
Packit |
bc1512 |
for (j=0;j
|
|
Packit |
bc1512 |
foo = gegl_lookup (lookup, rand[j]);
|
|
Packit |
bc1512 |
ticks = gegl_ticks ()-ticks;
|
|
Packit |
bc1512 |
g_print ("First run: %i\n", ticks);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
ticks = gegl_ticks ();
|
|
Packit |
bc1512 |
for (i=0;i
|
|
Packit |
bc1512 |
for (j=0;j
|
|
Packit |
bc1512 |
foo = gegl_lookup (lookup, rand[j]);
|
|
Packit |
bc1512 |
ticks = gegl_ticks ()-ticks;
|
|
Packit |
bc1512 |
g_print ("Second run: %i\n", ticks);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
ticks = gegl_ticks ();
|
|
Packit |
bc1512 |
for (i=0;i
|
|
Packit |
bc1512 |
for (j=0;j
|
|
Packit |
bc1512 |
foo = sqrt (rand[j]);
|
|
Packit |
bc1512 |
ticks = gegl_ticks ()-ticks;
|
|
Packit |
bc1512 |
g_print ("Just sqrt: %i\n", ticks);
|
|
Packit |
bc1512 |
gegl_lookup_free (lookup);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
lookup = gegl_lookup_new (passthrough, NULL);
|
|
Packit |
bc1512 |
for (val = 0.0, sum=0.0, count=0; val < 1.0; val+=0.000001, count++)
|
|
Packit |
bc1512 |
sum += fabs (val-gegl_lookup (lookup, val));
|
|
Packit |
bc1512 |
g_printf ("Average error in range 0.0-1.0: %f\n", sum/count);
|
|
Packit |
bc1512 |
foo = sqrt (val);
|
|
Packit |
bc1512 |
gegl_lookup_free (lookup);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
g_free (rand);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
if (foo)
|
|
Packit |
bc1512 |
return 0;
|
|
Packit |
bc1512 |
return 0;
|
|
Packit |
bc1512 |
}
|