Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

bibi88

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-08-2011
07:29 AM

84 Views

ippiMulC

I'm learning more and more how to use ipp, which is a great optimized library.

However, I still have sometimes some problems to understand the results that I get.

For example, I'm using ippiMulC to multiply a matrix by a negative floating constant. More precisely, here is my code:

Ipp8u src[6*2]={255,123,134,76,65,127,

128,34,78,84,121,149};

Ipp16s dst[6*2];

IppiSize size={6,2};

ippiMulC_16s_C1RSfs(src, 6, (Ipp16s) (-0.565), dst, 6, size,0);

int i,j;

for (i=0;i<2;i++)

{

for (j=0;j<6;j++)

{

printf("%d ", dst[j+i*6]);

}

printf("\\n");

}

The result is:

0 0 0 0 0 0

0 0 0 -21279 -22152 -16420

How could I get a floating result (32f uses only complex) as close as possible from the expected answer?

Should I transform -0.565 into a complex number? Should I use divC instead of mulC?

Thanks in advance!

Link Copied

2 Replies

Vladimir_Dudnik

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-08-2011
12:56 PM

84 Views

Please check with documentation the function parameter types. The function ippiMulC_16s_C1R takes source as a pointer to signed 16-bit integer array while you supply array of 8-bit integers (I think the piece of code you use as an example should not even compile).

Also, the result of casting -0.565 to 16-bit integer is 0 is not it? Then result of multiplication of any number with zero expected to be zero, correct?

You have to use functions which produce floating point result instead of function which produce 16-bit integer result. For example, you may try to use ippiMulC_32f_C1R function (it will require you to convert your 8-bit integer image into 32-bit floating point format with ippiConvert_8u32f_C1R function).

Regards,

Vladimir

bibi88

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-08-2011
04:20 PM

84 Views

Thanks to your advices, it works now quite well! Thank you!

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

For more complete information about compiler optimizations, see our Optimization Notice.