digitalmars.D - Complex math functions (importing from C)
- Nick (11/11) Aug 01 2004 While the complex number support of D is great, I've noticed that phobos...
While the complex number support of D is great, I've noticed that phobos still lacks most math functions for complex numbers. In the mean time I thought I'd try importing some functions from C, but haven't had much luck with this. Since you can import non-complex math functions by using the 'real' type directly, I thought you also might be able to do something like extern (C) creal cexpl(creal); but calling this just gives a segfault :( I've also tried calling the functions with 24 byte structs (a gcc complex long double is 24 bytes, not 20 like creal) but it still gives the occational segfault (I think it's messing up the stack.) Anybody who can help me? Nick
Aug 01 2004
Nick wrote:but calling this just gives a segfault :( I've also tried calling the functions with 24 byte structs (a gcc complex long double is 24 bytes, not 20 like creal) but it still gives the occational segfault (I think it's messing up the stack.)What do they do with the extra 4 bytes?Anybody who can help me?I think somebody is currently working on math related functions.
Aug 01 2004
In article <cej9ja$28nr$1 digitaldaemon.com>, parabolis says...Nick wrote:A long double has two unused bytes, and a complex is composed of two of those. The two bytes take on semi-random values depending on which function created them and are ignored in any calculation. The 80 bit float is the maximum on Intel processors, so I guess they are reserved for other architectures. Nickbut calling this just gives a segfault :( I've also tried calling the functions with 24 byte structs (a gcc complex long double is 24 bytes, not 20 like creal) but it still gives the occational segfault (I think it's messing up the stack.)What do they do with the extra 4 bytes?
Aug 01 2004
Are you working with gcc? "Nick" <Nick_member pathlink.com> wrote in message news:cej7jg$285p$1 digitaldaemon.com...While the complex number support of D is great, I've noticed that phobosstilllacks most math functions for complex numbers. In the mean time I thoughtI'dtry importing some functions from C, but haven't had much luck with this. Since you can import non-complex math functions by using the 'real' type directly, I thought you also might be able to do something like extern (C) creal cexpl(creal); but calling this just gives a segfault :( I've also tried calling thefunctionswith 24 byte structs (a gcc complex long double is 24 bytes, not 20 likecreal)but it still gives the occational segfault (I think it's messing up thestack.)Anybody who can help me? Nick
Aug 01 2004
In article <cejibv$2c39$2 digitaldaemon.com>, Walter says...Are you working with gcc?Nah, why'd you think that? :) I've just done some experimenting with complex numbers in C using gcc. Nick
Aug 01 2004
"Nick" <Nick_member pathlink.com> wrote in message news:cejqit$2erh$1 digitaldaemon.com...In article <cejibv$2c39$2 digitaldaemon.com>, Walter says...complexAre you working with gcc?Nah, why'd you think that? :) I've just done some experimenting withnumbers in C using gcc.I suspect the problem is in the function return conventions used by the compiler. It's easy enough to check.
Aug 01 2004