This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: complex numbers in libguile


Jim Blandy writes:
 > 
 > > The gsl contains many functions that involve complex numbers. While they
 > > are a custom datatype in C libraries, they're a built-in type in scheme.
 > > How does one pass real- and imgainary part of a SCM obj representing a
 > > complex number through libguile, so that the gsl can map it from and to
 > > an instance of the corresponding struct ? I don't feel like constructing 
 > > a smob for something that already has a built-in equivalent.
 > 
 > I take it the custom datatype used by gsl is something like
 > 
 > 	struct complex { double x, y };
 > 
Approximately.

 > What's wrong with converting between that and Guile's normal complex
 > number representation?  That is, to convert a gsl complex number to a
 > Scheme value, call scm_makdbl; to do the reverse, do something like
 > this:

I didn't mean that there might be anything wrong, I just didn't know what I 
have to look for in libguile source ... 'grep complex *.c' and the like wasn't
of much help ... 
 
		
 > 
 > struct complex scm2complex (SCM z);
 > {
 >   struct complex out;
 > 
 >   out.x = scm_num2dbl (z);
 >   if (SCM_CPLXP (z))
 >     out.y = SCM_IMAG(z);
 >   else
 >     out.y = 0.0;
 > 
 >   return out;
 > }
 > 

Ok thanks.

Klaus Schilling