3 * Copyright (C) INRIA - METALAU Project <scicos@inria.fr>
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 * See the file ./license.txt
21 /*--------------------------------------------------------------------------*/
24 #include "scicos_block4.h"
26 #include "localization.h"
27 /*--------------------------------------------------------------------------*/
28 void convert(scicos_block *block,int flag)
34 m=GetInPortRows(block,1);
35 n=GetInPortCols(block,1);
36 ipar=GetIparPtrs(block);
38 if ((flag==1)|(flag==6))
44 so=GetSizeOfOut(block,1);
45 u=GetInPortPtrs(block,1);
46 y=GetOutPortPtrs(block,1);
52 u=GetRealInPortPtrs(block,1);
53 y=Getint32OutPortPtrs(block,1);
57 w=v-(double)((int)(v/k))*k;
59 {if (w>=0) w=(-k/2+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
60 else w=-(-(k/2)+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
67 u=GetRealInPortPtrs(block,1);
68 y=Getint16OutPortPtrs(block,1);
72 w=v-(double)((int)(v/k))*k;
74 {if (w>=0) w=(-k/2+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
75 else w=-(-(k/2)+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
82 u=GetRealInPortPtrs(block,1);
83 y=Getint8OutPortPtrs(block,1);
87 w=v-(double)((int)(v/k))*k;
89 {if (w>=0) w=(-k/2+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
90 else w=-(-(k/2)+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
97 u=GetRealInPortPtrs(block,1);
98 y=Getuint32OutPortPtrs(block,1);
102 w=v-(double)((int)(v/k))*k;
103 y[i]=(unsigned long)w;}
108 u=GetRealInPortPtrs(block,1);
109 y=Getuint16OutPortPtrs(block,1);
113 w=v-(double)((int)(v/k))*k;
114 y[i]=(unsigned short)w;}
119 u=GetRealInPortPtrs(block,1);
120 y=Getuint8OutPortPtrs(block,1);
124 w=v-(double)((int)(v/k))*k;
125 y[i]=(unsigned char)w;}
130 u=Getint32InPortPtrs(block,1);
131 y=GetRealOutPortPtrs(block,1);
132 for (i=0;i<m*n;i++) y[i]=(double) u[i];
137 u=Getint32InPortPtrs(block,1);
138 y=Getint16OutPortPtrs(block,1);
142 w=v-(double)((int)(v/k))*k;
144 {if (w>=0) w=(-k/2+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
145 else w=-(-(k/2)+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
152 u=Getint32InPortPtrs(block,1);
153 y=Getint8OutPortPtrs(block,1);
157 w=v-(double)((int)(v/k))*k;
159 {if (w>=0) w=(-k/2+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
160 else w=-(-(k/2)+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
167 u=Getint32InPortPtrs(block,1);
168 y=Getuint16OutPortPtrs(block,1);
172 w=v-(double)((int)(v/k))*k;
173 y[i]=(unsigned short)w;}
178 u=Getint32InPortPtrs(block,1);
179 y=Getuint8OutPortPtrs(block,1);
183 w=v-(double)((int)(v/k))*k;
184 y[i]=(unsigned char)w;}
189 u=Getint16InPortPtrs(block,1);
190 y=GetRealOutPortPtrs(block,1);
191 for (i=0;i<m*n;i++) y[i]=(double) u[i];
196 u=Getint16InPortPtrs(block,1);
197 y=Getint32OutPortPtrs(block,1);
204 u=Getint16InPortPtrs(block,1);
205 y=Getint8OutPortPtrs(block,1);
209 w=v-(double)((int)(v/k))*k;
211 {if (w>=0) w=(-k/2+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
212 else w=-(-(k/2)+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
219 u=Getint16InPortPtrs(block,1);
220 y=Getuint32OutPortPtrs(block,1);
222 {y[i]=(unsigned long)u[i];}
227 u=Getint16InPortPtrs(block,1);
228 y=Getuint8OutPortPtrs(block,1);
232 w=v-(double)((int)(v/k))*k;
233 y[i]=(unsigned char)w;}
238 u=Getint8InPortPtrs(block,1);
239 y=GetRealOutPortPtrs(block,1);
240 for (i=0;i<m*n;i++) y[i]=(double) u[i];
245 u=Getint8InPortPtrs(block,1);
246 y=Getint32OutPortPtrs(block,1);
253 u=Getint8InPortPtrs(block,1);
254 y=Getint16OutPortPtrs(block,1);
261 u=Getint8InPortPtrs(block,1);
262 y=Getuint32OutPortPtrs(block,1);
264 {y[i]=(unsigned long)u[i];}
269 u=Getint8InPortPtrs(block,1);
270 y=Getuint16OutPortPtrs(block,1);
272 {y[i]=(unsigned short)u[i];}
277 u=Getuint32InPortPtrs(block,1);
278 y=GetRealOutPortPtrs(block,1);
279 for (i=0;i<m*n;i++) y[i]=(double) u[i];
284 u=Getuint32InPortPtrs(block,1);
285 y=Getint16OutPortPtrs(block,1);
289 w=v-(double)((int)(v/k))*k;
291 { w=(-k/2+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
298 u=Getuint32InPortPtrs(block,1);
299 y=Getint8OutPortPtrs(block,1);
303 w=v-(double)((int)(v/k))*k;
305 {w=(-k/2+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
312 u=Getuint32InPortPtrs(block,1);
313 y=Getuint16OutPortPtrs(block,1);
317 w=v-(double)((int)(v/k))*k;
318 y[i]=(unsigned short)w;}
323 u=Getuint32InPortPtrs(block,1);
324 y=Getuint8OutPortPtrs(block,1);
328 w=v-(double)((int)(v/k))*k;
329 y[i]=(unsigned char)w;}
334 u=Getuint16InPortPtrs(block,1);
335 y=GetRealOutPortPtrs(block,1);
336 for (i=0;i<m*n;i++) y[i]=(double) u[i];
341 u=Getuint16InPortPtrs(block,1);
342 y=Getint32OutPortPtrs(block,1);
349 u=Getuint16InPortPtrs(block,1);
350 y=Getint8OutPortPtrs(block,1);
354 w=v-(double)((int)(v/k))*k;
356 {w=(-k/2+fabs(w-(double)((int)(w/(k/2)))*(k/2)));
363 u=Getuint16InPortPtrs(block,1);
364 y=Getuint32OutPortPtrs(block,1);
366 {y[i]=(unsigned long)u[i];}
371 u=Getuint16InPortPtrs(block,1);
372 y=Getuint8OutPortPtrs(block,1);
376 w=v-(double)((int)(v/k))*k;
377 y[i]=(unsigned char)w;}
382 u=Getuint8InPortPtrs(block,1);
383 y=GetRealOutPortPtrs(block,1);
384 for (i=0;i<m*n;i++) y[i]=(double) u[i];
389 u=Getuint8InPortPtrs(block,1);
390 y=Getint32OutPortPtrs(block,1);
397 u=Getuint8InPortPtrs(block,1);
398 y=Getint16OutPortPtrs(block,1);
405 u=Getuint8InPortPtrs(block,1);
406 y=Getuint32OutPortPtrs(block,1);
408 {y[i]=(unsigned long)u[i];}
413 u=Getuint8InPortPtrs(block,1);
414 y=Getuint16OutPortPtrs(block,1);
416 {y[i]=(unsigned short)u[i];}
421 u=GetRealInPortPtrs(block,1);
422 y=Getint32OutPortPtrs(block,1);
426 {y[i]=(long)(k/2-1);}
427 else if (u[i]<-(k/2))
429 else {y[i]=(long)(u[i]);}
435 u=GetRealInPortPtrs(block,1);
436 y=Getint16OutPortPtrs(block,1);
440 {y[i]=(short)(k/2-1);}
441 else if (u[i]<-(k/2))
442 {y[i]=-(short)(k/2);}
443 else {y[i]=(short)(u[i]);}
449 u=GetRealInPortPtrs(block,1);
450 y=Getint8OutPortPtrs(block,1);
454 {y[i]=(char)(k/2-1);}
455 else if (u[i]<-(k/2))
457 else {y[i]=(char)(u[i]);}
463 u=GetRealInPortPtrs(block,1);
464 y=Getuint32OutPortPtrs(block,1);
468 {y[i]=(unsigned long)(k-1);}
471 else {y[i]=(unsigned long)(u[i]);}
477 u=GetRealInPortPtrs(block,1);
478 y=Getuint16OutPortPtrs(block,1);
482 {y[i]=(unsigned short)(k-1);}
485 else {y[i]=(unsigned short)(u[i]);}
491 u=GetRealInPortPtrs(block,1);
492 y=Getuint8OutPortPtrs(block,1);
496 {y[i]=(unsigned char)(k-1);}
499 else {y[i]=(unsigned char)(u[i]);}
505 u=Getint32InPortPtrs(block,1);
506 y=Getint16OutPortPtrs(block,1);
509 {if (u[i]>(long)(k/2-1))
510 {y[i]=(short)(k/2-1);}
511 else if (u[i]<-(long)(k/2))
512 {y[i]=-(short)(k/2);}
513 else {y[i]=(short)(u[i]);}
519 u=Getint32InPortPtrs(block,1);
520 y=Getint8OutPortPtrs(block,1);
523 {if (u[i]>(long)(k/2-1))
524 {y[i]=(char)(k/2-1);}
525 else if (u[i]<-(long)(k/2))
527 else {y[i]=(char)(u[i]);}
533 u=Getint32InPortPtrs(block,1);
534 y=Getuint32OutPortPtrs(block,1);
538 else {y[i]=(unsigned long)(u[i]);}
544 u=Getint32InPortPtrs(block,1);
545 y=Getuint16OutPortPtrs(block,1);
548 {if (u[i]>=(long)(k))
549 {y[i]=(unsigned short)(k-1);}
552 else {y[i]=(unsigned short)(u[i]);}
558 u=Getint32InPortPtrs(block,1);
559 y=Getuint8OutPortPtrs(block,1);
563 {y[i]=(unsigned char)(k-1);}
566 else {y[i]=(unsigned char)(u[i]);}
572 u=Getint16InPortPtrs(block,1);
573 y=Getint8OutPortPtrs(block,1);
576 {if (u[i]>(short)(k/2-1))
577 {y[i]=(char)(k/2-1);}
578 else if (u[i]<-(short)(k/2))
580 else {y[i]=(char)(u[i]);}
586 u=Getint16InPortPtrs(block,1);
587 y=Getuint32OutPortPtrs(block,1);
590 else y[i]=(unsigned long)u[i];}
595 u=Getint16InPortPtrs(block,1);
596 y=Getuint16OutPortPtrs(block,1);
600 else {y[i]=(unsigned short)(u[i]);}
606 u=Getint16InPortPtrs(block,1);
607 y=Getuint8OutPortPtrs(block,1);
611 {y[i]=(unsigned char)(k-1);}
614 else {y[i]=(unsigned char)(u[i]);}
620 u=Getint8InPortPtrs(block,1);
621 y=Getuint32OutPortPtrs(block,1);
624 else y[i]=(unsigned long)u[i];}
629 u=Getint8InPortPtrs(block,1);
630 y=Getuint16OutPortPtrs(block,1);
634 else {y[i]=(unsigned short)(u[i]);}
640 u=Getint8InPortPtrs(block,1);
641 y=Getuint8OutPortPtrs(block,1);
645 else {y[i]=(unsigned char)(u[i]);}
651 u=Getuint32InPortPtrs(block,1);
652 y=Getint32OutPortPtrs(block,1);
655 {if (u[i]>(unsigned long)(k/2-1))
656 {y[i]=(long)(k/2-1);}
657 else {y[i]=(long)(u[i]);}
663 u=Getuint32InPortPtrs(block,1);
664 y=Getint16OutPortPtrs(block,1);
667 {if (u[i]>(unsigned long)(k/2-1))
668 {y[i]=(short)(k/2-1);}
669 else {y[i]=(short)(u[i]);}
675 u=Getuint32InPortPtrs(block,1);
676 y=Getint8OutPortPtrs(block,1);
679 {if (u[i]>(unsigned long)(k/2-1))
680 {y[i]=(char)(k/2-1);}
681 else {y[i]=(char)(u[i]);}
687 u=Getuint32InPortPtrs(block,1);
688 y=Getuint16OutPortPtrs(block,1);
691 {if (u[i]>(unsigned long)(k/2-1))
692 {y[i]=(unsigned short)(k/2-1);}
693 else {y[i]=(unsigned short)(u[i]);}
699 u=Getuint32InPortPtrs(block,1);
700 y=Getuint8OutPortPtrs(block,1);
703 {if (u[i]>(unsigned long)(k/2-1))
704 {y[i]=(unsigned char)(k/2-1);}
705 else {y[i]=(unsigned char)(u[i]);}
711 u=Getuint16InPortPtrs(block,1);
712 y=Getint16OutPortPtrs(block,1);
715 {if (u[i]>(unsigned short)(k/2-1))
716 {y[i]=(short)(k/2-1);}
717 else {y[i]=(short)(u[i]);}
723 u=Getuint16InPortPtrs(block,1);
724 y=Getint8OutPortPtrs(block,1);
727 {if (u[i]>(unsigned short)(k/2-1))
728 {y[i]=(char)(k/2-1);}
729 else {y[i]=(char)(u[i]);}
735 u=Getuint16InPortPtrs(block,1);
736 y=Getuint8OutPortPtrs(block,1);
739 {if (u[i]>(unsigned short)(k/2-1))
740 {y[i]=(unsigned char)k/2-1;}
741 else {y[i]=(unsigned char)(u[i]);}
747 u=Getuint8InPortPtrs(block,1);
748 y=Getint8OutPortPtrs(block,1);
751 {if (u[i]>(unsigned char)(k/2-1))
752 {y[i]=(char)(k/2-1);}
753 else {y[i]=(char)(u[i]);}
759 u=GetRealInPortPtrs(block,1);
760 y=Getint32OutPortPtrs(block,1);
763 {if ((u[i]>k/2-1) | (u[i]<-(k/2)))
765 {sciprint(_("overflow error"));
768 else {y[i]=(long)(u[i]);}
774 u=GetRealInPortPtrs(block,1);
775 y=Getint16OutPortPtrs(block,1);
778 {if ((u[i]>k/2-1) | (u[i]<-(k/2)))
780 {sciprint(_("overflow error"));
783 else {y[i]=(short)(u[i]);}
789 u=GetRealInPortPtrs(block,1);
790 y=Getint8OutPortPtrs(block,1);
793 {if ((u[i]>k/2-1) | (u[i]<-(k/2)))
795 {sciprint(_("overflow error"));
798 else {y[i]=(char)(u[i]);}
804 u=GetRealInPortPtrs(block,1);
805 y=Getuint32OutPortPtrs(block,1);
808 {if ((u[i]>=k) | (u[i]<0))
810 {sciprint(_("overflow error"));
813 else {y[i]=(unsigned long)(u[i]);}
819 u=GetRealInPortPtrs(block,1);
820 y=Getuint16OutPortPtrs(block,1);
823 {if ((u[i]>=k) | (u[i]<0))
825 {sciprint(_("overflow error"));
828 else {y[i]=(unsigned short)(u[i]);}
834 u=GetRealInPortPtrs(block,1);
835 y=Getuint8OutPortPtrs(block,1);
838 {if ((u[i]>=k) | (u[i]<0))
840 {sciprint(_("overflow error"));
843 else {y[i]=(unsigned char)(u[i]);}
849 u=Getint32InPortPtrs(block,1);
850 y=Getint16OutPortPtrs(block,1);
853 {if ((u[i]>k/2-1) | (u[i]<-(k/2)))
855 {sciprint(_("overflow error"));
858 else {y[i]=(short)(u[i]);}
864 u=Getint32InPortPtrs(block,1);
865 y=Getint8OutPortPtrs(block,1);
868 {if ((u[i]>k/2-1) | (u[i]<-(k/2)))
870 {sciprint(_("overflow error"));
873 else {y[i]=(char)(u[i]);}
879 u=Getint32InPortPtrs(block,1);
880 y=Getuint32OutPortPtrs(block,1);
884 {sciprint(_("overflow error"));
887 else {y[i]=(unsigned long)(u[i]);}
893 u=Getint32InPortPtrs(block,1);
894 y=Getuint16OutPortPtrs(block,1);
897 {if ((u[i]>=k) | (u[i]<0))
899 {sciprint(_("overflow error"));
902 else {y[i]=(unsigned short)(u[i]);}
908 u=Getint32InPortPtrs(block,1);
909 y=Getuint8OutPortPtrs(block,1);
912 {if ((u[i]>=k) | (u[i]<0))
914 {sciprint(_("overflow error"));
917 else {y[i]=(unsigned char)(u[i]);}
923 u=Getint16InPortPtrs(block,1);
924 y=Getint8OutPortPtrs(block,1);
927 {if ((u[i]>k/2-1) | (u[i]<-(k/2)))
929 {sciprint(_("overflow error"));
932 else {y[i]=(char)(u[i]);}
938 u=Getint16InPortPtrs(block,1);
939 y=Getuint32OutPortPtrs(block,1);
943 {sciprint(_("overflow error"));
946 else y[i]=(unsigned long)u[i];}
951 u=Getint16InPortPtrs(block,1);
952 y=Getuint16OutPortPtrs(block,1);
956 {sciprint(_("overflow error"));
959 else {y[i]=(unsigned short)(u[i]);}
965 u=Getint16InPortPtrs(block,1);
966 y=Getuint8OutPortPtrs(block,1);
969 {if (((u[i]>=k) | (u[i]<0))& (flag==1))
971 {sciprint(_("overflow error"));
974 else {y[i]=(unsigned char)(u[i]);}
980 u=Getint8InPortPtrs(block,1);
981 y=Getuint32OutPortPtrs(block,1);
985 {sciprint(_("overflow error"));
988 else y[i]=(unsigned long)u[i];}
993 u=Getint8InPortPtrs(block,1);
994 y=Getuint16OutPortPtrs(block,1);
998 {sciprint(_("overflow error"));
1001 else {y[i]=(unsigned short)(u[i]);}
1007 u=Getint8InPortPtrs(block,1);
1008 y=Getuint8OutPortPtrs(block,1);
1012 {sciprint(_("overflow error"));
1013 set_block_error(-4);
1015 else {y[i]=(unsigned char)(u[i]);}
1021 u=Getuint32InPortPtrs(block,1);
1022 y=Getint32OutPortPtrs(block,1);
1027 {sciprint(_("overflow error"));
1028 set_block_error(-4);
1030 else {y[i]=(long)(u[i]);}
1036 u=Getuint32InPortPtrs(block,1);
1037 y=Getint16OutPortPtrs(block,1);
1042 {sciprint(_("overflow error"));
1043 set_block_error(-4);
1045 else {y[i]=(short)(u[i]);}
1051 u=Getuint32InPortPtrs(block,1);
1052 y=Getint8OutPortPtrs(block,1);
1057 {sciprint(_("overflow error"));
1058 set_block_error(-4);
1060 else {y[i]=(char)(u[i]);}
1066 u=Getuint32InPortPtrs(block,1);
1067 y=Getuint16OutPortPtrs(block,1);
1072 {sciprint(_("overflow error"));
1073 set_block_error(-4);
1075 else {y[i]=(unsigned short)(u[i]);}
1081 u=Getuint32InPortPtrs(block,1);
1082 y=Getuint8OutPortPtrs(block,1);
1087 {sciprint(_("overflow error"));
1088 set_block_error(-4);
1090 else {y[i]=(unsigned char)(u[i]);}
1096 u=Getuint16InPortPtrs(block,1);
1097 y=Getint16OutPortPtrs(block,1);
1102 {sciprint(_("overflow error"));
1103 set_block_error(-4);
1105 else {y[i]=(short)(u[i]);}
1111 u=Getuint16InPortPtrs(block,1);
1112 y=Getint8OutPortPtrs(block,1);
1117 {sciprint(_("overflow error"));
1118 set_block_error(-4);
1120 else {y[i]=(char)(u[i]);}
1126 u=Getuint16InPortPtrs(block,1);
1127 y=Getuint8OutPortPtrs(block,1);
1132 {sciprint(_("overflow error"));
1133 set_block_error(-4);
1135 else {y[i]=(unsigned char)(u[i]);}
1141 u=Getuint8InPortPtrs(block,1);
1142 y=Getint8OutPortPtrs(block,1);
1147 {sciprint(_("overflow error"));
1148 set_block_error(-4);
1150 else {y[i]=(char)(u[i]);}
1156 /*--------------------------------------------------------------------------*/