gcc and cacos not working

Hello all,

I fail to compile this simple test program:

Code:
/* Link with "-lm" */

#include <complex.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>

int
main(int argc, char *argv[])
{
    double complex z, c, f;
    double complex i = I;

    if (argc != 3) {
        fprintf(stderr, "Usage: %s <real> <imag>\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    z = atof(argv[1]) + atof(argv[2]) * I;

    c = cacos(z);

    printf("cacos() = %6.3f %6.3f*i\n", creal(c), cimag(c));

    f = -i * clog(z + i * csqrt(1 - z * z));

    printf("formula = %6.3f %6.3f*i\n", creal(f), cimag(f));

    exit(EXIT_SUCCESS);
}

I tried with GCC 4.2.1 and gcc46 and complain about missing cacos and clog function. I need to make it work because I am using the ATS compiler (http://www.ats-lang.org) which needs the complex extension of gcc.

Any idea to overcome this problem?

Thanks.
 
Please, read complex(3)() man page.
Code:
BUGS
     The inverse trigonometric and hyperbolic functions cacos(), cacosh(),
     casin(), casinh(), catan(), catanh(), ccos(), ccosh(), csin(), csinh(),
     ctan(), and ctanh() are not implemented.

     The logarithmic functions clog() are not implemented.

     The power functions cpow() are not implemented.

Also you might want to read the implementation of complex functions in FreeBSD:
http://lists.freebsd.org/pipermail/freebsd-current/2012-May/034288.html.

On FreeBSD-HEAD are finished the implementation of cacos and already patches are available for clog. See https://wiki.freebsd.org/Numerics for more details.
 
Back
Top