/* $Id: example16.c,v 2.0 2003/02/22 15:27:32 judd Exp $ */

#include<vsip.h>
#define L 20 /* A length*/
int main(){vsip_init((void*)0);
{
    vsip_vview_f*   a = vsip_vcreate_f(L,0);
    vsip_vview_f*   b = vsip_vcreate_f(L,0);
    vsip_vview_vi*  ab_vi = vsip_vcreate_vi(L,0);
    vsip_vview_bl*  ab_bl= vsip_vcreate_bl(L,0);
    int i;
    vsip_length N;
    /* make up some data */
    vsip_vramp_f(0,2 * M_PI/(L-1),a);
    vsip_vcos_f(a,b);
    /* find out where b is greater than zero */
    vsip_vfill_f(0,a);
    vsip_vlgt_f(b,a,ab_bl);
    /* find the index where b is greater than zero */
    if((N = vsip_vindexbool(ab_bl,ab_vi))){
        /* make a vector of those points where b is greater than zero*/
        vsip_vgather_f(b,ab_vi,vsip_vputlength_f(a,N));
        /*print out the results */
        printf("Index   Value\n");
        for(i=0; i<N; i++)
           printf("%li      %6.3f\n",
             vsip_vget_vi(ab_vi,i),
             vsip_vget_f(a,i));
     }   
     else{ printf("Zero Length Index");
     }   
     vsip_valldestroy_f(a);
     vsip_valldestroy_f(b);
     vsip_valldestroy_vi(ab_vi);
     vsip_valldestroy_bl(ab_bl);
     } vsip_finalize((void*)0); return 0;
}
Example #2
0
int main()
{
  int i;
  vsip_vview_bl *blA;
  vsip_vview_bl *blB;
  vsip_vview_bl *andBl;
  vsip_scalar_bl vsip_false = 0;
  vsip_scalar_bl vsip_true = !vsip_false;

vsip_init((void *)0);
 blA = vsip_vcreate_bl(L, VSIP_MEM_NONE);
 blB = vsip_vcreate_bl(L, VSIP_MEM_NONE);
 andBl = vsip_vcreate_bl(L, VSIP_MEM_NONE);
 /* Make up some data */
 vsip_vput_bl(blA,0,vsip_false);
 vsip_vput_bl(blB,0,vsip_false);
 vsip_vput_bl(blA,1,vsip_false);
 vsip_vput_bl(blB,1,vsip_true);
 vsip_vput_bl(blA,2,vsip_true);
 vsip_vput_bl(blB,2,vsip_false);
 vsip_vput_bl(blA,3,vsip_true);
 vsip_vput_bl(blB,3,vsip_true);
 /* do a boolean AND of A with B */
 vsip_vand_bl(blA,blB,andBl);
 /* print the results */
 printf(" A B => A and B\n");
 for(i = 0; i<L; i++)
 {
   printf("%5s %5s %5s \n", 
	  vsip_vget_bl(blA,i) ? "True ":"False",
	  vsip_vget_bl(blB,i) ? "True ":"False", 
	  vsip_vget_bl(andBl,i) ? "True ":"False");
 }
 /* recover allocated memory */
 vsip_blockdestroy_bl(vsip_vdestroy_bl(blA));
 vsip_blockdestroy_bl(vsip_vdestroy_bl(blB));
 vsip_blockdestroy_bl(vsip_vdestroy_bl(andBl));
 vsip_finalize((void *)0);
 return 0;
}
Example #3
0
int main()
{
  vsip_vview_d *dataA;
  vsip_vview_d *dataB;
  vsip_vview_vi *Index;
  vsip_vview_bl *dataBl;
  int i;
  vsip_length N;

  vsip_init((void *)0);
  dataA = vsip_vcreate_d(L, VSIP_MEM_NONE);
  dataB = vsip_vcreate_d(L, VSIP_MEM_NONE);
  Index = vsip_vcreate_vi(L, VSIP_MEM_NONE);
  dataBl= vsip_vcreate_bl(L, VSIP_MEM_NONE);
  /* make up some data */
  vsip_vramp_d(0,2 * PI/(L-1),dataA);
  vsip_vcos_d(dataA,dataB);
  /* find out where dataB is greater than zero */
  vsip_vfill_d(0,dataA);
  vsip_vlgt_d(dataB,dataA,dataBl);
  /* find the index where dataB is greater than zero */
  if((N = vsip_vindexbool(dataBl,Index)))
  {
    /* make a vector of those points where dataB is greater than zero*/
    vsip_vgather_d(dataB,Index,vsip_vputlength_d(dataA,N));
    /*print out the results */
    printf("Index Value\n");
    for(i=0; i<N; i++)
      printf("%li %6.3f\n",
	     vsip_vget_vi(Index,i),
	     vsip_vget_d(dataA,i));
  }
  else
  {
    printf("Zero Length Index");
    exit(0);
  }
  vsip_vfill_d(0,dataB);
  vsip_vscatter_d(dataA,dataB,Index);
  for(i=0; i<L; i++)
    printf("%6.3f\n",vsip_vget_d(dataB,i));
  /*recover the data space*/
  vsip_blockdestroy_d(vsip_vdestroy_d(dataA));
  vsip_blockdestroy_d(vsip_vdestroy_d(dataB));
  vsip_blockdestroy_vi(vsip_vdestroy_vi(Index));
  vsip_blockdestroy_bl(vsip_vdestroy_bl(dataBl));
  vsip_finalize((void *)0);
  return 0;
}