1*975be1d8Smartynas /* $OpenBSD: complex.c,v 1.2 2015/07/16 13:42:06 martynas Exp $ */
2bbd647e6Smartynas
3bbd647e6Smartynas /*
4bbd647e6Smartynas * Written by Martynas Venckus. Public domain
5bbd647e6Smartynas */
6bbd647e6Smartynas
7bbd647e6Smartynas #include <assert.h>
8bbd647e6Smartynas #include <complex.h>
9bbd647e6Smartynas #include <math.h>
10bbd647e6Smartynas
11bbd647e6Smartynas #define PREC 1000
12bbd647e6Smartynas #define test(f, r, i) ( \
13bbd647e6Smartynas floor((__real__ (f)) * PREC) == floor((r) * PREC) && \
14bbd647e6Smartynas floor((__imag__ (f)) * PREC) == floor((i) * PREC) \
15bbd647e6Smartynas )
16bbd647e6Smartynas #define testf(f, r, i) ( \
17bbd647e6Smartynas floorf((__real__ (f)) * PREC) == floorf((r) * PREC) && \
18bbd647e6Smartynas floorf((__imag__ (f)) * PREC) == floorf((i) * PREC) \
19bbd647e6Smartynas )
20*975be1d8Smartynas #define testl(f, r, i) ( \
21*975be1d8Smartynas floorl((__real__ (f)) * PREC) == floorl((r) * PREC) && \
22*975be1d8Smartynas floorl((__imag__ (f)) * PREC) == floorl((i) * PREC) \
23*975be1d8Smartynas )
24bbd647e6Smartynas
25bbd647e6Smartynas int
main(int argc,char * argv[])26bbd647e6Smartynas main(int argc, char *argv[])
27bbd647e6Smartynas {
28bbd647e6Smartynas double complex r, z4 = -1.1 - 1.1 * I;
29*975be1d8Smartynas float complex rf, z4f = -1.1F - 1.1F * I;
30*975be1d8Smartynas long double complex rl, z4l = -1.1L - 1.1L * I;
31bbd647e6Smartynas
32bbd647e6Smartynas r = cacosh(z4);
33bbd647e6Smartynas assert(test(r, 1.150127, -2.256295));
34bbd647e6Smartynas r = casinh(z4);
35bbd647e6Smartynas assert(test(r, -1.150127, -0.685498));
36bbd647e6Smartynas r = catanh(z4);
37bbd647e6Smartynas assert(test(r, -0.381870, -1.071985));
38bbd647e6Smartynas
39bbd647e6Smartynas rf = cacoshf(z4f);
40*975be1d8Smartynas assert(testf(rf, 1.150127F, -2.256295F));
41bbd647e6Smartynas rf = casinhf(z4f);
42*975be1d8Smartynas assert(testf(rf, -1.150127F, -0.685498F));
43bbd647e6Smartynas rf = catanhf(z4f);
44*975be1d8Smartynas assert(testf(rf, -0.381870F, -1.071985F));
45*975be1d8Smartynas
46*975be1d8Smartynas rl = cacoshl(z4l);
47*975be1d8Smartynas assert(testl(rl, 1.150127L, -2.256295L));
48*975be1d8Smartynas rl = casinhl(z4l);
49*975be1d8Smartynas assert(testl(rl, -1.150127L, -0.685498L));
50*975be1d8Smartynas rl = catanhl(z4l);
51*975be1d8Smartynas assert(testl(rl, -0.381870L, -1.071985L));
52bbd647e6Smartynas
53bbd647e6Smartynas return (0);
54bbd647e6Smartynas }
55