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

#include <arm_sve.h>

typedef double _Complex dcomplex;

dcomplex a;
dcomplex *x, *z, *c;

int main(int argc, char* argv[])
{
  unsigned long j, n;

  j = 0;
  n = 16;

  x = (dcomplex*) calloc(sizeof(dcomplex), n);
  //y = (dcomplex*) calloc(sizeof(dcomplex), n);
  dcomplex y = 1 + 1 * I;
  c = (dcomplex*) calloc(sizeof(dcomplex), n);

  a = 0.1;
  for (j = 0; j < n; j++)
    x[j] = j + j * I;

  printf("x= %f %f %f %f %f %f\n", creal(x[0]), cimag(x[0]), creal(x[1]), cimag(x[1]), creal(x[2]), cimag(x[2]));
  //printf("y= %f %f %f %f %f %f\n", creal(y[0]), cimag(y[0]), creal(y[1]), cimag(y[1]), creal(y[2]), cimag(y[2]));
  printf("y= %f %f", creal(y), cimag(y));
  printf("c= %f %f %f %f %f %f\n", creal(c[0]), cimag(c[0]), creal(c[1]), cimag(c[1]), creal(c[2]), cimag(c[2]));
  printf("complex double product");

svedef(x, complex_double, n)
//vedef(y, complex_double, n)
sveasmfor( c = x * y)

  for (j = 0; j < n; j++)
  printf("%f %f \n", creal(c[j]), cimag(c[j]));
  //printf("%f %f %f %f %f %f\n", c[0], c[1], c[2], c[3], c[4], c[5]);

//printf("n= %d ", n);
//n=n*1;

  return 0;
}