Edit

kc3-lang/libffi/testsuite/libffi.complex/return_complex.inc

Branch :

  • Show log

    Commit

  • Author : Richard Henderson
    Date : 2014-11-14 11:00:14
    Hash : c952a92e
    Message : testsuite: Move complex tests to their own subdirectory It seems a bit silly to isolate them by globbing vs "*complex*" when we can just as easily put them in their own subdirectory.

  • testsuite/libffi.complex/return_complex.inc
  • /* -*-c-*- */
    #include "ffitest.h"
    #include <complex.h>
    
    static _Complex T_C_TYPE return_c(_Complex T_C_TYPE c)
    {
      printf ("%f,%fi\n", T_CONV creal (c), T_CONV cimag (c));
      return 2 * c;
    }
    int main (void)
    {
      ffi_cif cif;
      ffi_type *args[MAX_ARGS];
      void *values[MAX_ARGS];
      _Complex T_C_TYPE c, rc, rc2;
      T_C_TYPE cr, ci;
    
      args[0] = &T_FFI_TYPE;
      values[0] = &c;
    
      /* Initialize the cif */
      CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
    		     &T_FFI_TYPE, args) == FFI_OK);
    
      for (cr = -127.0; cr <  127; cr++)
        {
          ci = 1000.0 - cr;
          c = cr + ci * I;
          ffi_call(&cif, FFI_FN(return_c), &rc, values);
          rc2 = return_c(c);
          printf ("%f,%fi vs %f,%fi\n",
    	      T_CONV creal (rc), T_CONV cimag (rc),
    	      T_CONV creal (rc2), T_CONV cimag (rc2));
          CHECK(rc == 2 * c);
        }
      exit(0);
    }