Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

Division bug?

hilaz
Beginner
487 Views

In one of our new projects we've used a few of the arithmetic operations provided in the ippi package. Amongst those functions were ippiDiv_32f_C1R and ippiDiv_32f_C1IR. To test the results we've made a comparison to a pixelwise division. The tests showed some bad results for part of the divisions tested.

Are you familiar with this bug? Is there a version that fixes it or a workaround?

Attached are two images and the test code for the div function (the in place function was tested in a similar way). Dividing img2 by img1 reproduces the bug (for both of the functions listed above). Note that the bug is not always symmetrical, i.e., sometimes dividing img2 by img1 will reproduce the bug, but the same operation performed in place will not, and vice versa. If necessary, more examples can be provided.

We thank you for your help,

intmain(intargc, char* argv[])

{

constfloatERR_DIFF = 0.0001;

// prepare params

intwidth = 143;

intheight = 134;

float* pSrc1 = ReadImage('D:\images\img1.tif');

float* pSrc2 = ReadImage('D:\images\img2.tif');

float* pDivRes = newfloat[width*height];

longstep = width * sizeof(float);

IppiSizeroiSize = {width, height};

// apply ippi function

ippiDiv_32f_C1R(pSrc1, step, pSrc2, step, pDivRes, step, roiSize);

// compare result to pixelwise division

for (longi=0; i<width*height; i++) {

if (pSrc1[i] == 0)

continue;

floatdivRes = pSrc2[i] / pSrc1[i]; // ref

floatdiff = pDivRes[i] - divRes; // err

if (diff < 0)

diff = -diff;

if (diff > ERR_DIFF) {

cout << "div test failed" << endl;

break;

}

}

}

0 Kudos
1 Reply
Ying_S_Intel
Employee
487 Views
Which version of IPP you are using? What platform do youuse?We have not seen this report befoe.

Coud you please submit this issue via Intel Premier Support and also include your system confirguration in details?

Thanks,
Ying
0 Kudos
Reply