(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
builtins-20.c
       1  /* Copyright (C) 2003  Free Software Foundation.
       2  
       3     Verify that built-in math function constant folding doesn't break
       4     anything and produces the expected results.
       5  
       6     Written by Roger Sayle, 8th June 2003.  */
       7  
       8  /* { dg-do link } */
       9  /* { dg-options "-O2 -ffast-math" } */
      10  
      11  #include "builtins-config.h"
      12  
      13  extern double cos (double);
      14  extern double sin (double);
      15  extern double tan (double);
      16  extern double fabs (double);
      17  extern double atan2 (double, double);
      18  extern double copysign (double, double);
      19  extern double fmin (double, double);
      20  extern double fmax (double, double);
      21  extern double hypot (double, double);
      22  extern double pure (double) __attribute__ ((__pure__));
      23  extern double carg (__complex__ double);
      24  extern __complex__ double ccos (__complex__ double);
      25  extern __complex__ double ctan (__complex__ double);
      26  extern float cosf (float);
      27  extern float sinf (float);
      28  extern float tanf (float);
      29  extern float fabsf (float);
      30  extern float atan2f (float, float);
      31  extern float copysignf (float, float);
      32  extern float fminf (float, float);
      33  extern float fmaxf (float, float);
      34  extern float hypotf (float, float);
      35  extern float puref (float) __attribute__ ((__pure__));
      36  extern float cargf (__complex__ float);
      37  extern __complex__ float ccosf (__complex__ float);
      38  extern __complex__ float ctanf (__complex__ float);
      39  extern long double cosl (long double);
      40  extern long double sinl (long double);
      41  extern long double tanl (long double);
      42  extern long double fabsl (long double);
      43  extern long double atan2l (long double, long double);
      44  extern long double copysignl (long double, long double);
      45  extern long double fminl (long double, long double);
      46  extern long double fmaxl (long double, long double);
      47  extern long double hypotl (long double, long double);
      48  extern long double purel (long double) __attribute__ ((__pure__));
      49  extern long double cargl (__complex__ long double);
      50  extern __complex__ long double ccosl (__complex__ long double);
      51  extern __complex__ long double ctanl (__complex__ long double);
      52  
      53  extern void link_error(void);
      54  
      55  void test1(double x)
      56  {
      57    if (cos(x) != cos(-x))
      58      link_error ();
      59  
      60    if (cos(x) != cos(fabs(x)))
      61      link_error ();
      62  
      63    if (cos(x) != cos(-fabs(x)))
      64      link_error ();
      65  
      66    if (cos(tan(x)) != cos(tan(-fabs(x))))
      67      link_error ();
      68  
      69    if (sin(x)/cos(x) != tan(x))
      70      link_error ();
      71  
      72    if (cos(x)/sin(x) != 1.0/tan(x))
      73      link_error ();
      74  
      75    if (tan(x)*cos(x) != sin(x))
      76      link_error ();
      77  
      78    if (cos(x)*tan(x) != sin(x))
      79      link_error ();
      80  
      81    if (sin(x)/tan(x) != cos(x))
      82      link_error ();
      83  
      84    if (tan(x)/sin(x) != 1.0/cos(x))
      85      link_error ();
      86  }
      87  
      88  void test2(double x, double y)
      89  {
      90    if (-tan(x-y) != tan(y-x))
      91      link_error ();
      92  
      93    if (-sin(x-y) != sin(y-x))
      94      link_error ();
      95  
      96    if (cos(-x*y) != cos(x*y))
      97      link_error ();
      98  
      99    if (cos(x*-y) != cos(x*y))
     100      link_error ();
     101  
     102    if (cos(-x/y) != cos(x/y))
     103      link_error ();
     104  
     105    if (cos(x/-y) != cos(x/y))
     106      link_error ();
     107  
     108    if (cos(-fabs(tan(x/-y))) != cos(tan(x/y)))
     109      link_error ();
     110  
     111    if (cos(y<10 ? -x : y) != cos(y<10 ? x : y))
     112      link_error ();
     113  
     114    if (cos(y<10 ? x : -y) != cos(y<10 ? x : y))
     115      link_error ();
     116  
     117    if (cos(y<10 ? -fabs(x) : tan(x<20 ? -x : -fabs(y)))
     118        != cos(y<10 ? x : tan(x<20 ? x : y)))
     119      link_error ();
     120  
     121    if (cos((y*=3, -x)) != cos((y*=3,x)))
     122      link_error ();
     123  
     124    if (cos(-fabs(tan(x/-y))) != cos(tan(x/y)))
     125      link_error ();
     126  
     127    if (cos(copysign(x,y)) != cos(x))
     128      link_error ();
     129  
     130    if (cos(copysign(-fabs(x),y*=2)) != cos((y*=2,x)))
     131      link_error ();
     132  
     133    if (hypot (x, 0) != fabs(x))
     134      link_error ();
     135  
     136    if (hypot (0, x) != fabs(x))
     137      link_error ();
     138  
     139    if (hypot (x, x) != fabs(x) * __builtin_sqrt(2))
     140      link_error ();
     141  
     142    if (hypot (-x, y) != hypot (x, y))
     143      link_error ();
     144  
     145    if (hypot (x, -y) != hypot (x, y))
     146      link_error ();
     147  
     148    if (hypot (-x, -y) != hypot (x, y))
     149      link_error ();
     150  
     151    if (hypot (fabs(x), y) != hypot (x, y))
     152      link_error ();
     153  
     154    if (hypot (x, fabs(y)) != hypot (x, y))
     155      link_error ();
     156  
     157    if (hypot (fabs(x), fabs(y)) != hypot (x, y))
     158      link_error ();
     159  
     160    if (hypot (-fabs(-x), -fabs(fabs(fabs(-y)))) != hypot (x, y))
     161      link_error ();
     162  
     163    if (hypot (-x, 0) != fabs(x))
     164      link_error ();
     165  
     166    if (hypot (-x, x) != fabs(x) * __builtin_sqrt(2))
     167      link_error ();
     168  
     169    if (hypot (pure(x), -pure(x)) != fabs(pure(x)) * __builtin_sqrt(2))
     170      link_error ();
     171  
     172    if (hypot (tan(-x), tan(-fabs(y))) != hypot (tan(x), tan(y)))
     173      link_error ();
     174  
     175    if (fmin (fmax(x,y),y) != y)
     176      link_error ();
     177  
     178    if (fmin (fmax(y,x),y) != y)
     179      link_error ();
     180  
     181    if (fmin (x,fmax(x,y)) != x)
     182      link_error ();
     183    
     184    if (fmin (x,fmax(y,x)) != x)
     185      link_error ();
     186    
     187    if (fmax (fmin(x,y),y) != y)
     188      link_error ();
     189  
     190    if (fmax (fmin(y,x),y) != y)
     191      link_error ();
     192  
     193    if (fmax (x,fmin(x,y)) != x)
     194      link_error ();
     195    
     196    if (fmax (x,fmin(y,x)) != x)
     197      link_error ();
     198  
     199    if ((__complex__ double) x != -(__complex__ double) (-x))
     200      link_error ();
     201  
     202    if (x*1i != -(-x*1i))
     203      link_error ();
     204  
     205    if (x+(x-y)*1i != -(-x+(y-x)*1i))
     206      link_error ();
     207  
     208    if (x+(x-y)*1i != -(-x-(x-y)*1i))
     209      link_error ();
     210  
     211    if (ccos(tan(x)+sin(y)*1i) != ccos(-tan(-x)+-sin(-y)*1i))
     212      link_error ();
     213  
     214    if (ccos(tan(x)+sin(x-y)*1i) != ccos(-tan(-x)-sin(y-x)*1i))
     215      link_error ();
     216  
     217    if (-5+x*1i != -~(5+x*1i))
     218      link_error ();
     219  
     220    if (tan(x)+tan(y)*1i != -~(tan(-x)+tan(y)*1i))
     221      link_error ();
     222  }
     223  
     224  void test3(__complex__ double x, __complex__ double y, int i)
     225  {
     226    if (carg(x) != atan2(__imag__ x, __real__ x))
     227      link_error ();
     228  
     229    if (ccos(x) != ccos(-x))
     230      link_error();
     231  
     232    if (ccos(ctan(x)) != ccos(ctan(-x)))
     233      link_error();
     234  
     235    if (ctan(x-y) != -ctan(y-x))
     236      link_error();
     237  
     238    if (ccos(x/y) != ccos(-x/y))
     239      link_error();
     240  
     241    if (ccos(x/y) != ccos(x/-y))
     242      link_error();
     243  
     244    if (ccos(x/ctan(y)) != ccos(-x/ctan(-y)))
     245      link_error();
     246  
     247    if (ccos(x*y) != ccos(-x*y))
     248      link_error();
     249  
     250    if (ccos(x*y) != ccos(x*-y))
     251      link_error();
     252  
     253    if (ccos(ctan(x)*y) != ccos(ctan(-x)*-y))
     254      link_error();
     255  
     256    if (ccos(ctan(x/y)) != ccos(-ctan(x/-y)))
     257      link_error();
     258  
     259    if (ccos(i ? x : y) != ccos(i ? -x : y))
     260      link_error();
     261  
     262    if (ccos(i ? x : y) != ccos(i ? x : -y))
     263      link_error();
     264  
     265    if (ccos(i ? x : ctan(y/x)) != ccos(i ? -x : -ctan(-y/x)))
     266      link_error();
     267  
     268    if (~x != -~-x)
     269      link_error();
     270  
     271    if (ccos(~x) != ccos(-~-x))
     272      link_error();
     273  
     274    if (ctan(~(x-y)) != -ctan(~(y-x)))
     275      link_error();
     276  
     277    if (ctan(~(x/y)) != -ctan(~(x/-y)))
     278      link_error();
     279  }
     280  
     281  void test1f(float x)
     282  {
     283    if (cosf(x) != cosf(-x))
     284      link_error ();
     285  
     286    if (cosf(x) != cosf(fabsf(x)))
     287      link_error ();
     288  
     289    if (cosf(x) != cosf(-fabsf(x)))
     290      link_error ();
     291  
     292    if (cosf(tanf(x)) != cosf(tanf(-fabsf(x))))
     293      link_error ();
     294  
     295  #ifdef HAVE_C99_RUNTIME
     296    if (sinf(x)/cosf(x) != tanf(x))
     297      link_error ();
     298  
     299    if (cosf(x)/sinf(x) != 1.0f/tanf(x))
     300      link_error ();
     301  
     302    if (tanf(x)*cosf(x) != sinf(x))
     303      link_error ();
     304  
     305    if (cosf(x)*tanf(x) != sinf(x))
     306      link_error ();
     307  
     308    if (sinf(x)/tanf(x) != cosf(x))
     309      link_error ();
     310  
     311    if (tanf(x)/sinf(x) != 1.0f/cosf(x))
     312      link_error ();
     313  #endif
     314  }
     315  
     316  void test2f(float x, float y)
     317  {
     318    if (-tanf(x-y) != tanf(y-x))
     319      link_error ();
     320  
     321    if (-sinf(x-y) != sinf(y-x))
     322      link_error ();
     323  
     324    if (cosf(-x*y) != cosf(x*y))
     325      link_error ();
     326  
     327    if (cosf(x*-y) != cosf(x*y))
     328      link_error ();
     329  
     330    if (cosf(-x/y) != cosf(x/y))
     331      link_error ();
     332  
     333    if (cosf(x/-y) != cosf(x/y))
     334      link_error ();
     335  
     336    if (cosf(-fabsf(tanf(x/-y))) != cosf(tanf(x/y)))
     337      link_error ();
     338  
     339    if (cosf(y<10 ? -x : y) != cosf(y<10 ? x : y))
     340      link_error ();
     341  
     342    if (cosf(y<10 ? x : -y) != cosf(y<10 ? x : y))
     343      link_error ();
     344  
     345    if (cosf(y<10 ? -fabsf(x) : tanf(x<20 ? -x : -fabsf(y)))
     346        != cosf(y<10 ? x : tanf(x<20 ? x : y)))
     347      link_error ();
     348  
     349    if (cosf((y*=3, -x)) != cosf((y*=3,x)))
     350      link_error ();
     351  
     352    if (cosf(-fabsf(tanf(x/-y))) != cosf(tanf(x/y)))
     353      link_error ();
     354  
     355    if (cosf(copysignf(x,y)) != cosf(x))
     356      link_error ();
     357  
     358    if (cosf(copysignf(-fabsf(x),y*=2)) != cosf((y*=2,x)))
     359      link_error ();
     360  
     361    if (hypotf (x, 0) != fabsf(x))
     362      link_error ();
     363  
     364    if (hypotf (0, x) != fabsf(x))
     365      link_error ();
     366  
     367    if (hypotf (x, x) != fabsf(x) * __builtin_sqrtf(2))
     368      link_error ();
     369  
     370    if (hypotf (-x, y) != hypotf (x, y))
     371      link_error ();
     372  
     373    if (hypotf (x, -y) != hypotf (x, y))
     374      link_error ();
     375  
     376    if (hypotf (-x, -y) != hypotf (x, y))
     377      link_error ();
     378  
     379    if (hypotf (fabsf(x), y) != hypotf (x, y))
     380      link_error ();
     381  
     382    if (hypotf (x, fabsf(y)) != hypotf (x, y))
     383      link_error ();
     384  
     385    if (hypotf (fabsf(x), fabsf(y)) != hypotf (x, y))
     386      link_error ();
     387  
     388    if (hypotf (-fabsf(-x), -fabsf(fabsf(fabsf(-y)))) != hypotf (x, y))
     389      link_error ();
     390  
     391    if (hypotf (-x, 0) != fabsf(x))
     392      link_error ();
     393  
     394    if (hypotf (-x, x) != fabsf(x) * __builtin_sqrtf(2))
     395      link_error ();
     396  
     397    if (hypotf (puref(x), -puref(x)) != fabsf(puref(x)) * __builtin_sqrtf(2))
     398      link_error ();
     399  
     400    if (hypotf (tanf(-x), tanf(-fabsf(y))) != hypotf (tanf(x), tanf(y)))
     401      link_error ();
     402  
     403    if (fminf (fmaxf(x,y),y) != y)
     404      link_error ();
     405  
     406    if (fminf (fmaxf(y,x),y) != y)
     407      link_error ();
     408  
     409    if (fminf (x,fmaxf(x,y)) != x)
     410      link_error ();
     411    
     412    if (fminf (x,fmaxf(y,x)) != x)
     413      link_error ();
     414    
     415    if (fmaxf (fminf(x,y),y) != y)
     416      link_error ();
     417  
     418    if (fmaxf (fminf(y,x),y) != y)
     419      link_error ();
     420  
     421    if (fmaxf (x,fminf(x,y)) != x)
     422      link_error ();
     423    
     424    if (fmaxf (x,fminf(y,x)) != x)
     425      link_error ();
     426  
     427    if ((__complex__ float) x != -(__complex__ float) (-x))
     428      link_error ();
     429  
     430    if (x+(x-y)*1i != -(-x+(y-x)*1i))
     431      link_error ();
     432  
     433    if (x+(x-y)*1i != -(-x-(x-y)*1i))
     434      link_error ();
     435  
     436    if (ccosf(tanf(x)+sinf(y)*1i) != ccosf(-tanf(-x)+-sinf(-y)*1i))
     437      link_error ();
     438  
     439    if (ccosf(tanf(x)+sinf(x-y)*1i) != ccosf(-tanf(-x)-sinf(y-x)*1i))
     440      link_error ();
     441  
     442    if (-5+x*1i != -~(5+x*1i))
     443      link_error ();
     444  
     445    if (tanf(x)+tanf(y)*1i != -~(tanf(-x)+tanf(y)*1i))
     446      link_error ();
     447  }
     448  
     449  void test3f(__complex__ float x, __complex__ float y, int i)
     450  {
     451    if (ccosf(x) != ccosf(-x))
     452      link_error();
     453  
     454    if (ccosf(ctanf(x)) != ccosf(ctanf(-x)))
     455      link_error();
     456  
     457    if (ctanf(x-y) != -ctanf(y-x))
     458      link_error();
     459  
     460    if (ccosf(x/y) != ccosf(-x/y))
     461      link_error();
     462  
     463    if (ccosf(x/y) != ccosf(x/-y))
     464      link_error();
     465  
     466    if (ccosf(x/ctanf(y)) != ccosf(-x/ctanf(-y)))
     467      link_error();
     468  
     469    if (ccosf(x*y) != ccosf(-x*y))
     470      link_error();
     471  
     472    if (ccosf(x*y) != ccosf(x*-y))
     473      link_error();
     474  
     475    if (ccosf(ctanf(x)*y) != ccosf(ctanf(-x)*-y))
     476      link_error();
     477  
     478    if (ccosf(ctanf(x/y)) != ccosf(-ctanf(x/-y)))
     479      link_error();
     480  
     481    if (ccosf(i ? x : y) != ccosf(i ? -x : y))
     482      link_error();
     483  
     484    if (ccosf(i ? x : y) != ccosf(i ? x : -y))
     485      link_error();
     486  
     487    if (ccosf(i ? x : ctanf(y/x)) != ccosf(i ? -x : -ctanf(-y/x)))
     488      link_error();
     489  
     490    if (~x != -~-x)
     491      link_error();
     492  
     493    if (ccosf(~x) != ccosf(-~-x))
     494      link_error();
     495  
     496    if (ctanf(~(x-y)) != -ctanf(~(y-x)))
     497      link_error();
     498  
     499    if (ctanf(~(x/y)) != -ctanf(~(x/-y)))
     500      link_error();
     501  
     502  #ifdef HAVE_C99_RUNTIME
     503    if (cargf(x) != atan2f(__imag__ x, __real__ x))
     504      link_error ();
     505  #endif
     506  }
     507  
     508  void test1l(long double x)
     509  {
     510    if (cosl(x) != cosl(-x))
     511      link_error ();
     512  
     513    if (cosl(x) != cosl(fabsl(x)))
     514      link_error ();
     515  
     516    if (cosl(x) != cosl(-fabsl(x)))
     517      link_error ();
     518  
     519    if (cosl(tanl(x)) != cosl(tanl(-fabsl(x))))
     520      link_error ();
     521  
     522  #ifdef HAVE_C99_RUNTIME
     523    if (sinl(x)/cosl(x) != tanl(x))
     524      link_error ();
     525  
     526    if (cosl(x)/sinl(x) != 1.0l/tanl(x))
     527      link_error ();
     528  
     529    if (tanl(x)*cosl(x) != sinl(x))
     530      link_error ();
     531  
     532    if (cosl(x)*tanl(x) != sinl(x))
     533      link_error ();
     534  
     535    if (sinl(x)/tanl(x) != cosl(x))
     536      link_error ();
     537  
     538    if (tanl(x)/sinl(x) != 1.0l/cosl(x))
     539      link_error ();
     540  #endif
     541  }
     542  
     543  void test2l(long double x, long double y)
     544  {
     545    if (-tanl(x-y) != tanl(y-x))
     546      link_error ();
     547  
     548    if (-sinl(x-y) != sinl(y-x))
     549      link_error ();
     550  
     551    if (cosl(-x*y) != cosl(x*y))
     552      link_error ();
     553  
     554    if (cosl(x*-y) != cosl(x*y))
     555      link_error ();
     556  
     557    if (cosl(-x/y) != cosl(x/y))
     558      link_error ();
     559  
     560    if (cosl(x/-y) != cosl(x/y))
     561      link_error ();
     562  
     563    if (cosl(-fabsl(tanl(x/-y))) != cosl(tanl(x/y)))
     564      link_error ();
     565  
     566    if (cosl(y<10 ? -x : y) != cosl(y<10 ? x : y))
     567      link_error ();
     568  
     569    if (cosl(y<10 ? x : -y) != cosl(y<10 ? x : y))
     570      link_error ();
     571  
     572    if (cosl(y<10 ? -fabsl(x) : tanl(x<20 ? -x : -fabsl(y)))
     573        != cosl(y<10 ? x : tanl(x<20 ? x : y)))
     574      link_error ();
     575  
     576    if (cosl((y*=3, -x)) != cosl((y*=3,x)))
     577      link_error ();
     578  
     579    if (cosl(-fabsl(tanl(x/-y))) != cosl(tanl(x/y)))
     580      link_error ();
     581  
     582    if (cosl(copysignl(x,y)) != cosl(x))
     583      link_error ();
     584  
     585    if (cosl(copysignl(-fabsl(x),y*=2)) != cosl((y*=2,x)))
     586      link_error ();
     587  
     588    if (hypotl (x, 0) != fabsl(x))
     589      link_error ();
     590  
     591    if (hypotl (0, x) != fabsl(x))
     592      link_error ();
     593  
     594    if (hypotl (x, x) != fabsl(x) * __builtin_sqrtl(2))
     595      link_error ();
     596  
     597    if (hypotl (-x, y) != hypotl (x, y))
     598      link_error ();
     599  
     600    if (hypotl (x, -y) != hypotl (x, y))
     601      link_error ();
     602  
     603    if (hypotl (-x, -y) != hypotl (x, y))
     604      link_error ();
     605  
     606    if (hypotl (fabsl(x), y) != hypotl (x, y))
     607      link_error ();
     608  
     609    if (hypotl (x, fabsl(y)) != hypotl (x, y))
     610      link_error ();
     611  
     612    if (hypotl (fabsl(x), fabsl(y)) != hypotl (x, y))
     613      link_error ();
     614  
     615    if (hypotl (-fabsl(-x), -fabsl(fabsl(fabsl(-y)))) != hypotl (x, y))
     616      link_error ();
     617  
     618    if (hypotl (-x, 0) != fabsl(x))
     619      link_error ();
     620  
     621    if (hypotl (-x, x) != fabsl(x) * __builtin_sqrtl(2))
     622      link_error ();
     623  
     624    if (hypotl (purel(x), -purel(x)) != fabsl(purel(x)) * __builtin_sqrtl(2))
     625      link_error ();
     626  
     627    if (hypotl (tanl(-x), tanl(-fabsl(y))) != hypotl (tanl(x), tanl(y)))
     628      link_error ();
     629  
     630    if (fminl (fmaxl(x,y),y) != y)
     631      link_error ();
     632  
     633    if (fminl (fmaxl(y,x),y) != y)
     634      link_error ();
     635  
     636    if (fminl (x,fmaxl(x,y)) != x)
     637      link_error ();
     638    
     639    if (fminl (x,fmaxl(y,x)) != x)
     640      link_error ();
     641    
     642    if (fmaxl (fminl(x,y),y) != y)
     643      link_error ();
     644  
     645    if (fmaxl (fminl(y,x),y) != y)
     646      link_error ();
     647  
     648    if (fmaxl (x,fminl(x,y)) != x)
     649      link_error ();
     650    
     651    if (fmaxl (x,fminl(y,x)) != x)
     652      link_error ();
     653  
     654    if ((__complex__ long double) x != -(__complex__ long double) (-x))
     655      link_error ();
     656  
     657    if (x+(x-y)*1i != -(-x+(y-x)*1i))
     658      link_error ();
     659  
     660    if (x+(x-y)*1i != -(-x-(x-y)*1i))
     661      link_error ();
     662  
     663    if (ccosl(tanl(x)+sinl(y)*1i) != ccosl(-tanl(-x)+-sinl(-y)*1i))
     664      link_error ();
     665  
     666    if (ccosl(tanl(x)+sinl(x-y)*1i) != ccosl(-tanl(-x)-sinl(y-x)*1i))
     667      link_error ();
     668  
     669    if (-5+x*1i != -~(5+x*1i))
     670      link_error ();
     671  
     672    if (tanl(x)+tanl(y)*1i != -~(tanl(-x)+tanl(y)*1i))
     673      link_error ();
     674  }
     675  
     676  void test3l(__complex__ long double x, __complex__ long double y, int i)
     677  {
     678    if (ccosl(x) != ccosl(-x))
     679      link_error();
     680  
     681    if (ccosl(ctanl(x)) != ccosl(ctanl(-x)))
     682      link_error();
     683  
     684    if (ctanl(x-y) != -ctanl(y-x))
     685      link_error();
     686  
     687    if (ccosl(x/y) != ccosl(-x/y))
     688      link_error();
     689  
     690    if (ccosl(x/y) != ccosl(x/-y))
     691      link_error();
     692  
     693    if (ccosl(x/ctanl(y)) != ccosl(-x/ctanl(-y)))
     694      link_error();
     695  
     696    if (ccosl(x*y) != ccosl(-x*y))
     697      link_error();
     698  
     699    if (ccosl(x*y) != ccosl(x*-y))
     700      link_error();
     701  
     702    if (ccosl(ctanl(x)*y) != ccosl(ctanl(-x)*-y))
     703      link_error();
     704  
     705    if (ccosl(ctanl(x/y)) != ccosl(-ctanl(x/-y)))
     706      link_error();
     707  
     708    if (ccosl(i ? x : y) != ccosl(i ? -x : y))
     709      link_error();
     710  
     711    if (ccosl(i ? x : y) != ccosl(i ? x : -y))
     712      link_error();
     713  
     714    if (ccosl(i ? x : ctanl(y/x)) != ccosl(i ? -x : -ctanl(-y/x)))
     715      link_error();
     716  
     717    if (~x != -~-x)
     718      link_error();
     719  
     720    if (ccosl(~x) != ccosl(-~-x))
     721      link_error();
     722  
     723    if (ctanl(~(x-y)) != -ctanl(~(y-x)))
     724      link_error();
     725  
     726    if (ctanl(~(x/y)) != -ctanl(~(x/-y)))
     727      link_error();
     728  
     729  #ifdef HAVE_C99_RUNTIME
     730    if (cargl(x) != atan2l(__imag__ x, __real__ x))
     731      link_error ();
     732  #endif
     733  }
     734  
     735  int main()
     736  {
     737    test1 (1.0);
     738    test2 (1.0, 2.0);
     739  
     740    test1f (1.0f);
     741    test2f (1.0f, 2.0f);
     742  
     743    test1l (1.0l);
     744    test2l (1.0l, 2.0l);
     745  
     746    return 0;
     747  }
     748