Is your issue resolved? We don't have the values of n and U to reproduce your problem.
Your OpenCL translation seems to be correct. Maybe expressing E1 and E2 also in terms of the pow() function would help, as n, U, E1, and E2 are the only variables (i.e. whose values can differ between the Octave version and the OpenCL version) that can influence the differing results.
Thanks for your reply! No i was not able to figure out why i get different results it is very strange
how would you translate this line in opencl?
EDIT: I did figure out sry its been a long project the correct answer was in the c translation c99 translation
int main(int argc, char *argv)
double v1 = 0.3;
double E1 = (207*(1e9));
double E2 = (3*(1e6));
double v2 = 0.49;
double pi = M_PI;
double Ers = (1.00/(1.00/pi*((1.00-pow(v1,2))/E1+(1.00-pow(v2, 2))/E2)));
printf("Ers = %g\n", Ers);
Can you try the following translation for E1 and E2 and report back?:
E1 = (double)(207*pow((double)10, 9))
E2 = (double)(3*pow((double)10,6))
With this change, we got the same Er result in OpenCL as your Er result using Octave.
Defactor uses additional variables (B, sigma), so we could not verify the result for that variable.