/*
**  -*- C -*-
**
** 
** Made by  Raffaele.Nutricato@tiscali.it
**
** Copyright Raffaele Nutricato
*/

#include "RealToComplex.h"

floatComplex s0floatcomplexc0(float in) 
{
  floatComplex out;
  out = FloatComplex(in,0);
  return out;
}

floatComplex d0floatcomplexc0(double in) 
{
  floatComplex out;
  out = FloatComplex(in,0);
  return out;
}

floatComplex c0floatcomplexc0(floatComplex in) 
{
   return in;
}

floatComplex z0floatcomplexc0(doubleComplex in) 
{
  floatComplex out;
  out = FloatComplex((float)zreals(in),(float)zimags(in));
  return out;
}

void s2floatcomplexc2(float* in, int* inSize, floatComplex* out) 
{
   int i = 0;
   for (i=0;i<inSize[0]*inSize[1];i++)
   {
      out[i] = s0floatcomplexc0(in[i]);
   }
}

void d2floatcomplexc2(double* in, int* inSize, floatComplex* out) 
{
   int i = 0;
   for (i=0;i<inSize[0]*inSize[1];i++)
   {
      out[i] = d0floatcomplexc0(in[i]);
   }
}

void c2floatcomplexc2(floatComplex* in, int* inSize, floatComplex* out) 
{
   int i = 0;
   for (i=0;i<inSize[0]*inSize[1];i++)
   {
      out[i] = c0floatcomplexc0(in[i]);
   }
}

void z2floatcomplexc2(doubleComplex* in, int* inSize, floatComplex* out) 
{
   int i = 0;
   for (i=0;i<inSize[0]*inSize[1];i++)
   {
      out[i] = z0floatcomplexc0(in[i]);
   }
}

doubleComplex s0doublecomplexz0(float in) 
{
  doubleComplex out;
  out = DoubleComplex((double)(in),0);
  return out;
}

doubleComplex d0doublecomplexz0(double in) 
{
  doubleComplex out;
  out = DoubleComplex(in,0);
  return out;
}

doubleComplex c0doublecomplexz0(floatComplex in) 
{
  doubleComplex out;
  out = DoubleComplex((double) creals(in),(double) cimags(in));
  return out;
}

doubleComplex z0doublecomplexz0(doubleComplex in) 
{
   return in;
}

void s2doublecomplexz2(float* in, int* inSize, doubleComplex* out) 
{
   int i = 0;
   for (i=0;i<inSize[0]*inSize[1];i++)
   {
      out[i] = s0doublecomplexz0(in[i]);
   }
}

void d2doublecomplexz2(double* in, int* inSize, doubleComplex* out) 
{
   int i = 0;
   for (i=0;i<inSize[0]*inSize[1];i++)
   {
      out[i] = d0doublecomplexz0(in[i]);
   }
}

void c2doublecomplexz2(floatComplex* in, int* inSize, doubleComplex* out) 
{
   int i = 0;
   for (i=0;i<inSize[0]*inSize[1];i++)
   {
      out[i] = c0doublecomplexz0(in[i]);
   }
}

void z2doublecomplexz2(doubleComplex* in, int* inSize, doubleComplex* out) 
{
   int i = 0;
   for (i=0;i<inSize[0]*inSize[1];i++)
   {
      out[i] = z0doublecomplexz0(in[i]);
   }
}