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] |
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