Good morning Jussi, thank you for this solution.
Don't you think, that a "gb.gsl" component would be from general interest ? Benoit, what is your opinion ? wally On Saturday, May 21, 2011 01:08:52 Jussi Lahtinen wrote: > Corrected (and working) version attached. > Though I'm not fully satisfied to it. Benoit, is it possible to have > pointer to struct with varptr? > Right now it cannot be done..? If you look at that attachment you will see > why it would be useful... > > Jussi > > On Fri, May 20, 2011 at 13:57, wally <wa...@voosen.eu> wrote: > > Of course i want to try some other functionality of GSL too. > > and of course I'm too stupid :) > > > > now 1st derivative > > the code contains also the working C original and the necessary header > > files > > containing the necessary definitions. > > > > error message is : FMain class line 50 > > "VarPtr() argument must be a dynamic, a static or a local variable" > > > > wally > > > > On Wednesday, May 18, 2011 18:07:56 Jussi Lahtinen wrote: > > > Seems to work (Gambas 3 rev 3850 @ Ubuntu 10.10 64bit), though, I > > > haven't check if the results are correct. > > > I'm out of time. > > > > > > Source attached. > > > > > > BTW. Why 'Library "libgsl"' doesn't find *any* library? However > > > 'Library "libgsl:0"' does! > > > > > > Jussi > > > > > > On Wed, May 18, 2011 at 18:53, wally <wa...@voosen.eu> wrote: > > > > Yes, few surprises in direction science are highly appreciated :) > > > > > > > > I have compile problems with the new "extern" > > > > At revision 3850. OpenSuse 11.3 > > > > > > > > > > > > gambas3_svn/trunk/main/gbx/gbx_c_application.c:401: undefined > > > > reference to `EXTERN_get_symbol' > > > > collect2: ld returned 1 exit status > > > > > > > > wally > > > > > > > > On Wednesday, May 18, 2011 17:33:31 Jussi Lahtinen wrote: > > > > > Benoit keeps on amazing us! > > > > > > > > > > Jussi > > > > > P.S. I haven't test it yet... > > > > > > > > > > On Wed, May 18, 2011 at 18:21, wally <wa...@voosen.eu> wrote: > > > > > > Thanks a lot ! :) > > > > > > wally > > > > > > > > > > > > On Wednesday, May 18, 2011 17:07:09 Benoît Minisini wrote: > > > > > > > > Hello Jussi, > > > > > > > > > > > > > > > > in C the stuff works pretty nice, so i agree to your > > > > > > > > suggestion 2. > > > > > > > > > > > > > > > > Do all math stuff directly in Gambas is an option i should > > > > check. > > > > > > > > > > I think i mentioned that i use Gambas3 and want to make > > > > > > > > interpolations, derivatives and integrals from an > > > > > > > > integrarray. The array contains ADC outputs from a CCD > > > > > > > > linear array sensor > > > > > > > > > > > > measurment > > > > > > > > > > > > > > wally > > > > > > > > > > > > > > > > On Monday, May 16, 2011 17:46:51 Jussi Lahtinen wrote: > > > > > > > > > Not very easy task... > > > > > > > > > Here is interpolation example in C. > > > > http://www.gnu.org/software/gsl/manual/html_node/Interpolation-Example- > > > > > > > > > > > pr og rams.html > > > > > > > > > > > > > > > > > > As you can see, you need to call several functions to get > > > > what > > > > > > you > > > > > > > > > > > > > want. Declaring those in Gambas is OK, except determining > > > > > > > > > interpolation type! > > > > > > > > > > > > > > > > > > You can find definition of interpolation type from > > > > > > > > "gsl_interp.h", > > > > > > > > > > > > > and unfortunately it is not anything simple; > > > > > > > > > > > > > > > > > > typedef struct { > > > > > > > > > > > > > > > > > > const char * name; > > > > > > > > > unsigned int min_size; > > > > > > > > > void * (*alloc) (size_t size); > > > > > > > > > int (*init) (void *, const double xa[], const > > > > > > > > > double > > > > > > > > ya[], > > > > > > > > > > > > > size_t > > > > > > > > > > > > > > > > > > size); > > > > > > > > > > > > > > > > > > int (*eval) (const void *, const double xa[], > > > > > > > > > const > > > > > > > > double > > > > > > > > > > > > > ya[], > > > > > > > > > > > > > > > > > > size_t size, double x, gsl_interp_accel *, double * y); > > > > > > > > > > > > > > > > > > int (*eval_deriv) (const void *, const double xa[], > > > > > > > > > const > > > > > > > > > > > > double > > > > > > > > > > > > > > > ya[], size_t size, double x, gsl_interp_accel *, double * > > > > y_p); > > > > > > > > > > > int (*eval_deriv2) (const void *, const double xa[], > > > > > > > > > const > > > > > > > > > > > > double > > > > > > > > > > > > > > > ya[], size_t size, double x, gsl_interp_accel *, double * > > > > > > > > > y_pp); > > > > > > > > > > > > > > > > > > int (*eval_integ) (const void *, const double xa[], > > > > > > > > > const > > > > > > > > > > > > double > > > > > > > > > > > > > > > ya[], size_t size, gsl_interp_accel *, double a, double b, > > > > > > > > > double > > > > > > > > * > > > > > > > > > > > > > result); void (*free) (void *); > > > > > > > > > > > > > > > > > > } gsl_interp_type; > > > > > > > > > > > > > > > > > > GSL_VAR const gsl_interp_type * gsl_interp_cspline; * <-- > > > > this > > > > > > > > > > > is > > > > > > > > > > > > used > > > > > > > > > > > > > > > in example* > > > > > > > > > > > > > > > > > > > > > > > > > > > Right now I don't know how to implement that reasonably in > > > > > > > > Gambas. > > > > > > > > > > > > > There are at least three possibilities to overcome this > > > > > > > > > problem: > > > > > > > > > > > > > > > > > > 1. Hope that Benoit will implement new feature to use > > > > external > > > > > > > > > > > structures. 2. Use C to write your own interface between > > > > > > > > > GSL and Gambas. Perhaps easiest option. > > > > > > > > > 3. Do not use GSL at all, and write what you need purely > > > > > > > > > with Gambas. > > > > > > > > > > > > > > > > > > That's all I can say... > > > > > > > > > Also because you didn't specify what you need exactly, nor > > > > are > > > > > > you > > > > > > > > > > > > > using Gambas 2 or 3. > > > > > > > > > > > > > > > > > > Jussi > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > I added a System.GetExternSymbol() method in the last revision > > > > > > > so > > > > > > > > that > > > > > > > > > > you > > > > > > > > > > > > > can get the address of the interpolation type structure. > > > > > > > > > > > > > > You have to do something like that: > > > > > > > Dim gsl_interp_cspline As Pointer > > > > > > > > > > > > > > gsl_interp_cspline = > > > > > > > Pointer@(System.GetExternSymbol("libgsl", > > > > > > > > > > > > > > "gsl_interp_cspline")) > > > > > > > > > > > > > > Maybe the Pointer@() is not needed, I don't know. The symbol > > > > > > > can > > > > be > > > > > > > > > directly the address of the structure (no Pointer@ needed), or > > > > > > > a pointer to the address of the structure. > > > > > > > > > > > > > > Try and tell me. > > > > > > > > > > > > > > Regards, > > > > ------------------------------------------------------------------------- > > > > > > > > ----- What Every C/C++ and Fortran developer Should Know! > > > > > > Read this article and learn how Intel has extended the reach of > > > > > > its next-generation tools to help Windows* and Linux* C/C++ and > > > > > > Fortran developers boost performance applications - including > > > > > > clusters. http://p.sf.net/sfu/intel-dev2devmay > > > > > > _______________________________________________ > > > > > > Gambas-user mailing list > > > > > > Gambas-user@lists.sourceforge.net > > > > > > https://lists.sourceforge.net/lists/listinfo/gambas-user > > > > ------------------------------------------------------------------------- > > > > > > -- > > > > > > > > > --- What Every C/C++ and Fortran developer Should Know! > > > > > Read this article and learn how Intel has extended the reach of its > > > > > next-generation tools to help Windows* and Linux* C/C++ and Fortran > > > > > developers boost performance applications - including clusters. > > > > > http://p.sf.net/sfu/intel-dev2devmay > > > > > _______________________________________________ > > > > > Gambas-user mailing list > > > > > Gambas-user@lists.sourceforge.net > > > > > https://lists.sourceforge.net/lists/listinfo/gambas-user > > > > ------------------------------------------------------------------------- > > > > > > ----- What Every C/C++ and Fortran developer Should Know! > > > > Read this article and learn how Intel has extended the reach of its > > > > next-generation tools to help Windows* and Linux* C/C++ and Fortran > > > > developers boost performance applications - including clusters. > > > > http://p.sf.net/sfu/intel-dev2devmay > > > > _______________________________________________ > > > > Gambas-user mailing list > > > > Gambas-user@lists.sourceforge.net > > > > https://lists.sourceforge.net/lists/listinfo/gambas-user > > > > ------------------------------------------------------------------------- > > ----- What Every C/C++ and Fortran developer Should Know! > > Read this article and learn how Intel has extended the reach of its > > next-generation tools to help Windows* and Linux* C/C++ and Fortran > > developers boost performance applications - including clusters. > > http://p.sf.net/sfu/intel-dev2devmay > > _______________________________________________ > > Gambas-user mailing list > > Gambas-user@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/gambas-user ------------------------------------------------------------------------------ What Every C/C++ and Fortran developer Should Know! Read this article and learn how Intel has extended the reach of its next-generation tools to help Windows* and Linux* C/C++ and Fortran developers boost performance applications - including clusters. http://p.sf.net/sfu/intel-dev2devmay _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user