#include “main.h” |
WINMULTITHREAD Branch1Thread3(LPVOID pParam) |
{PThreadArg tharg = (PThreadArg)pParam; |
double y1 = tharg->i1, y2 = tharg->i2; |
double z1 = MINIMUMVALUE, z2 = MINIMUMVALUE; |
do { |
do { |
if (((-(y1*y2 + 1)*(y1*y2 + 1) + 3*z1) > -APPZERO && |
(-(y1*y2 + 1)*(y1*y2 + 1) + 3*z1) < APPZERO) && |
((-z1 + z2*(y1*y2 + 1)) > -APPZERO && |
(-z1 + z2*(y1*y2 + 1)) < APPZERO)) { |
printf(“one solution of NLPS13 is z1 = %f, z2 = %f∖n”, z1, z2); |
} |
z2 += GRANULARITY; |
}while (z2 <= MAXIMUMVALUE); |
z1 += GRANULARITY; |
z2 = MINIMUMVALUE; |
} while (z1 <= MAXIMUMVALUE); |
return 0; |
} |
WINMULTITHREAD Branch1Thread4(LPVOID pParam) |
{PThreadArg tharg = (PThreadArg)pParam; |
double y1 = tharg->i1, y2 = tharg->i2; |
double z1 = MINIMUMVALUE, z2 = MINIMUMVALUE; |
do { |
do { |
if (((y1*y1 - z1) > -APPZERO && |
(y1*y1 - z1) < APPZERO) && |
((2*y1*y2 - z2) > -APPZERO && |
(2*y1*y2 - z2) < APPZERO)) { |
printf(“one solution of NLPS14 is z1 = %f, z2 = %f∖n”, z1, z2); |
} |
z2 += GRANULARITY; |
}while (z2 <= MAXIMUMVALUE); |
z1 += GRANULARITY; |
z2 = MINIMUMVALUE; |
} while (z1 <= MAXIMUMVALUE); |
return 0; |
} |
WINMULTITHREAD Branch1Thread2(LPVOID pParam) |
{HANDLE hThread13 = NULL, hThread14 = NULL; |
PThreadArg tharg = (PThreadArg)pParam; |
ThreadArg tharg12 = {0}; |
double x1 = tharg->i1, x2 = tharg->i2; |
double y1 = MINIMUMVALUE, y2 = MINIMUMVALUE; |
do { |
do { |
if (((3*x1 - y1*y1 + x2) > -APPZERO && |
(3*x1 - y1*y1 + x2) < APPZERO) && |
((x2 - y2*y1) > -APPZERO && |
(x2 - y2*y1) < APPZERO)) { |
printf(“one solution of NLPS12 is y1 = %f, y2 = %f∖n”, y1, y2); |
tharg12.i1 = y1; |
tharg12.i2 = y2; |
hThread13 = CreateThread(NULL, 0, Branch1Thread3, |
(LPVOID)&tharg12, 0, NULL); |
hThread14 = CreateThread(NULL, 0, Branch1Thread4, |
(LPVOID)&tharg12, 0, NULL); |
WaitForSingleObject(hThread13, INFINITE); |
WaitForSingleObject(hThread14, INFINITE); |
CloseHandle(hThread13); |
CloseHandle(hThread14); |
} |
y2 += GRANULARITY; |
}while (y2 <= MAXIMUMVALUE); |
y1 += GRANULARITY; |
y2 = MINIMUMVALUE; |
} while (y1 <= MAXIMUMVALUE); |
return 0; |
} |
WINMULTITHREAD Branch1Thread1(LPVOID pParam) |
{HANDLE hThread12 = NULL; |
PThreadArg tharg = (PThreadArg)pParam; |
ThreadArg tharg11 = {0}; |
double m1 = tharg->i1, m2 = tharg->i2; |
double x1 = MINIMUMVALUE, x2 = MINIMUMVALUE; |
do { |
do { |
if (((m2*m2 - x1) > -APPZERO && |
(m2*m2 - x1) < APPZERO) && |
((2*m1*m2 + x2) > -APPZERO && |
(2*m1*m2 + x2) < APPZERO)) { |
printf(“one solution of NLPS11 is x1 = %f, x2 = %f∖n”, x1, x2); |
tharg11.i1 = x1; |
tharg11.i2 = x2; |
hThread12 = CreateThread(NULL, 0, Branch1Thread2, |
(LPVOID)&tharg11, 0, NULL); |
WaitForSingleObject(hThread12, INFINITE); |
CloseHandle(hThread12); |
} |
x2 += GRANULARITY; |
}while (x2 <= MAXIMUMVALUE); |
x1 += GRANULARITY; |
x2 = MINIMUMVALUE; |
} while (x1 <= MAXIMUMVALUE); |
return 0; |
} |
int main() |
{LARGE_INTEGER litc, litStart, litEnd; |
HANDLE hThread1 = NULL; |
ThreadArg iTharg = {0}; |
printf(“Please enter the value of input m1 = ”); |
scanf(“%lf”, &iTharg.i1); |
printf(“Please enter the value of input m2 = ”); |
scanf(“%lf”, &iTharg.i2); |
QueryPerformanceFrequency(&litc); |
QueryPerformanceCounter(&litStart); |
hThread1 = CreateThread(NULL, 0, Branch1Thread1, |
(LPVOID)&iTharg, 0, NULL); |
WaitForSingleObject(hThread1, INFINITE); |
QueryPerformanceCounter(&litEnd); |
printf(“Execution time is %fs∖n”, (double) |
(litEnd.QuadPart - litStart.QuadPart)/litc.QuadPart); |
return 0; |
} |