annotate cip_t.h @ 0:e0bbaa717f41 draft default tip

lol J
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Mon, 25 Nov 2013 11:56:30 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
1 /* Copyright 1990-2011, Jsoftware Inc. All rights reserved. */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
2 /* License in license.txt. */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
3 /* */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
4 /* Template for ipbx (boolean inner products) */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
5
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
6 /* requires F(x,y) *x++g=*y++ where g is one of | & ^ */
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
7
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
8 if(c==CPLUSDOT&&(c0==IPBX1||c1==IPBX1)||c==CSTARDOT&&(c0==IPBX0||c1==IPBX0)){
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
9 e=c==CPLUSDOT?c1==IPBX1:c1==IPBX0;
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
10 for(i=0;i<m;++i){
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
11 b=*av; if(ac)++av; memcpy(zv,b?v1:v0,n); if(b==e){zv+=n; continue;}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
12 for(j=1;j<p;++j){
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
13 b=*av; if(ac)++av; if(b==e){memset(zv,c==CPLUSDOT?C1:C0,n); break;}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
14 uu=(I*)zv; vv=(I*)(b?v1+j*wc:v0+j*wc);
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
15 DO(q, F(uu,vv););
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
16 if(r){u=(B*)uu; v=(B*)vv; DO(r, F(u,v););}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
17 }
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
18 zv+=n;
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
19 }}else if(c==CPLUSDOT&&(c0==IPBX0||c1==IPBX0)||c==CSTARDOT&&(c0==IPBX1||c1==IPBX1)||
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
20 c==CNE&&(c0==IPBX0||c1==IPBX0)){
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
21 e=c==CSTARDOT?c1==IPBX1:c1==IPBX0;
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
22 for(i=0;i<m;++i){
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
23 b=*av; if(ac)++av; memcpy(zv,b?v1:v0,n);
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
24 for(j=1;j<p;++j){
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
25 b=*av; if(ac)++av; if(b==e)continue;
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
26 uu=(I*)zv; vv=(I*)(b?v1+j*wc:v0+j*wc);
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
27 DO(q, F(uu,vv););
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
28 if(r){u=(B*)uu; v=(B*)vv; DO(r, F(u,v););}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
29 }
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
30 zv+=n;
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
31 }}else
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
32 for(i=0;i<m;++i){
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
33 memcpy(zv,*av?v1:v0,n); if(ac)++av;
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
34 for(j=1;j<p;++j){
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
35 uu=(I*)zv; vv=(I*)(*av?v1+j*wc:v0+j*wc); if(ac)++av;
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
36 DO(q, F(uu,vv););
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
37 if(r){u=(B*)uu; v=(B*)vv; DO(r, F(u,v););}
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
38 }
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
39 zv+=n;
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
40 }
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
41 #undef F