📄 validate.c
字号:
xarray[8] = 6.319e-6; yarray[8] = 3.17;xarray[9] = 2.108e9; yarray[9] = -2.0;xarray[10] = 8.417e-3; yarray[10] = 0.5;xarray[11] = 5.347e7; yarray[11] = 1.0;xarray[12] = 10.0; yarray[12] = -17.0;xarray[13] = 10.0; yarray[13] = 2.33e1;xarray[14] = 9.0e2; yarray[14] = 0.0;xarray[15] = 2.0; yarray[15] = -3.62;for (i=1; i <= 15; i++) { xx1 = xarray[i]; xx2 = yarray[i]; yy = pow(xx1, xx2); m_apm_set_double(aa_mapm, xx1); m_apm_set_double(bb_mapm, xx2); m_apm_pow(cc_mapm, DECIMAL_PLACES, aa_mapm, bb_mapm); m_apm_to_string(buffer, DECIMAL_PLACES, cc_mapm); yy_mapm_lib = atof(buffer); ydiff = (yy_mapm_lib - yy) / yy; if (fabs(ydiff) > tolerance) { pass = FALSE; total_pass = FALSE; fprintf(stdout, "x1 = %10.3E x2 = %10.3E C-math-lib = %.15E \n",xx1,xx2,yy); fprintf(stdout, "DIFF = %17.10E M_APM_LIB = %s \n",ydiff,buffer); } }if (pass) fprintf(stdout,"... POW function passes\n"); /* * */numdigits = 70;fprintf(stdout, "\nVerify Some Known Quantities to 70 Digits ...\n");m_apm_sqrt(ee_mapm, (numdigits + 4), MM_Two);m_apm_divide(dd_mapm, (numdigits + 4), ee_mapm, MM_Two);m_apm_round(aa_mapm, numdigits, dd_mapm);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"\n");fprintf(stdout,"SQRT(2) / 2 = \n[%s]\n",buffer);m_apm_set_long(ee_mapm, 4L);m_apm_divide(dd_mapm, (numdigits + 4), MM_PI, ee_mapm);m_apm_sin(bb_mapm, numdigits, dd_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"SIN(PI / 4) = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: SQRT(2) / 2 == SIN(PI / 4)\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: SQRT(2) / 2 != SIN(PI / 4)\n"); }m_apm_cos(bb_mapm, numdigits, dd_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"COS(PI / 4) = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: SQRT(2) / 2 == COS(PI / 4)\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: SQRT(2) / 2 != COS(PI / 4)\n"); }m_apm_set_string(aa_mapm, "0.5");m_apm_set_long(ee_mapm, 6L);m_apm_divide(dd_mapm, (numdigits + 4), MM_PI, ee_mapm);m_apm_sin(bb_mapm, numdigits, dd_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"\n");fprintf(stdout,"SIN(PI / 6) = [%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: SIN(PI / 6) == 0.5\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: SIN(PI / 6) != 0.5\n"); }m_apm_set_string(ee_mapm, "0.75");m_apm_sqrt(aa_mapm, numdigits, ee_mapm);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"\n");fprintf(stdout,"SQRT(0.75) = \n[%s]\n",buffer);m_apm_set_long(ee_mapm, 6L);m_apm_divide(dd_mapm, (numdigits + 4), MM_PI, ee_mapm);m_apm_cos(bb_mapm, numdigits, dd_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"COS(PI / 6) = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: COS(PI / 6) == SQRT(0.75)\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: COS(PI / 6) != SQRT(0.75)\n"); }m_apm_set_string(ee_mapm, "3");m_apm_sqrt(dd_mapm, (numdigits + 4), ee_mapm);m_apm_add(ee_mapm, MM_Two, dd_mapm);m_apm_round(aa_mapm, numdigits, ee_mapm);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"\n");fprintf(stdout,"2 + SQRT(3) = \n[%s]\n",buffer);m_apm_set_long(ee_mapm, 5L);m_apm_set_long(dd_mapm, 12L);m_apm_multiply(cc_mapm, MM_PI, ee_mapm);m_apm_divide(ee_mapm, (numdigits + 4), cc_mapm, dd_mapm);m_apm_tan(bb_mapm, numdigits, ee_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"TAN(5 * PI / 12) = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: TAN(5 * PI / 12) == 2 + SQRT(3)\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: TAN(5 * PI / 12) != 2 + SQRT(3)\n"); }m_apm_set_string(ee_mapm, "0.5");m_apm_arcsin(aa_mapm, numdigits, ee_mapm);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"\n");fprintf(stdout,"ARC-SIN(0.5) = \n[%s]\n",buffer);m_apm_set_long(ee_mapm, 6L);m_apm_divide(dd_mapm, (numdigits + 4), MM_PI, ee_mapm);m_apm_round(bb_mapm, numdigits, dd_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"PI / 6 = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: ARC-SIN(0.5) == PI / 6\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: ARC-SIN(0.5) != PI / 6\n"); }m_apm_set_string(ee_mapm, "0.75");m_apm_sqrt(dd_mapm, (numdigits + 4), ee_mapm);m_apm_arccos(aa_mapm, numdigits, dd_mapm);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"\n");fprintf(stdout,"ARC-COS(SQRT(0.75)) = \n[%s]\n",buffer);m_apm_set_long(ee_mapm, 6L);m_apm_divide(dd_mapm, (numdigits + 4), MM_PI, ee_mapm);m_apm_round(bb_mapm, numdigits, dd_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"PI / 6 = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: ARC-COS(SQRT(0.75)) == PI / 6\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: ARC-COS(SQRT(0.75)) != PI / 6\n"); }m_apm_arctan(aa_mapm, numdigits, MM_One);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"\n");fprintf(stdout,"ARC-TAN(1.0) = \n[%s]\n",buffer);m_apm_set_long(ee_mapm, 4L);m_apm_divide(dd_mapm, (numdigits + 4), MM_PI, ee_mapm);m_apm_round(bb_mapm, numdigits, dd_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"PI / 4 = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: ARC-TAN(1.0) == PI / 4\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: ARC-TAN(1.0) != PI / 4\n"); }m_apm_exp(aa_mapm, numdigits, MM_One);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"\n");fprintf(stdout,"EXP(1.0) = \n[%s]\n",buffer);m_apm_round(bb_mapm, numdigits, MM_E);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"E = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: EXP(1.0) == E\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: EXP(1.0) != E\n"); }m_apm_set_string(ee_mapm, "0.5");m_apm_exp(aa_mapm, numdigits, ee_mapm);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"\n");fprintf(stdout,"EXP(0.5) = \n[%s]\n",buffer);m_apm_sqrt(bb_mapm, numdigits, MM_E);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"SQRT(E) = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: EXP(0.5) == SQRT(E)\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: EXP(0.5) != SQRT(E)\n"); }m_apm_copy(ee_mapm, MM_One);for (i=1; i <= 15; i++) { m_apm_multiply(dd_mapm, ee_mapm, MM_E); m_apm_copy(ee_mapm, dd_mapm); }m_apm_round(bb_mapm, numdigits, ee_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"\n");fprintf(stdout,"E ^ 15 = \n[%s]\n",buffer);m_apm_set_string(ee_mapm, "15.0");m_apm_exp(aa_mapm, numdigits, ee_mapm);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"EXP(15) = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: EXP(15) == E ^ 15\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: EXP(15) != E ^ 15\n"); }m_apm_integer_pow(cc_mapm, numdigits, MM_E, 15);m_apm_to_string(buffer, -1, cc_mapm);fprintf(stdout,"\n");fprintf(stdout,"INTEGER_POW (E^15) = \n[%s]\n",buffer);k = m_apm_compare(bb_mapm, cc_mapm);if (k == 0) fprintf(stdout,"PASS: INTEGER_POW E ^15 == E ^ 15\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: INTEGER_POW E ^15 != E ^ 15\n"); }m_apm_copy(ee_mapm, MM_One);for (i=1; i <= 26; i++) { m_apm_multiply(dd_mapm, ee_mapm, MM_PI); m_apm_copy(ee_mapm, dd_mapm); }m_apm_divide(dd_mapm, (numdigits + 8), MM_One, ee_mapm);m_apm_round(bb_mapm, numdigits, dd_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"\n");fprintf(stdout,"1 / (PI ^ 26) = \n[%s]\n",buffer);m_apm_integer_pow(cc_mapm, numdigits, MM_PI, -26);m_apm_to_string(buffer, -1, cc_mapm);fprintf(stdout,"INTEGER_POW (PI ^ -26) = \n[%s]\n",buffer);k = m_apm_compare(bb_mapm, cc_mapm);if (k == 0) fprintf(stdout,"PASS: INTEGER_POW PI ^ -26 == PI ^ -26\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: INTEGER_POW PI ^ -26 != PI ^ -26\n"); }m_apm_multiply(ee_mapm, MM_E, MM_E);m_apm_round(bb_mapm, numdigits, ee_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"\n");fprintf(stdout,"E ^ 2 = \n[%s]\n",buffer);m_apm_exp(aa_mapm, numdigits, MM_Two);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"EXP(2) = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: EXP(2) == E ^ 2\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: EXP(2) != E ^ 2\n"); }m_apm_copy(ee_mapm, MM_One);for (i=1; i <= 13; i++) { m_apm_multiply(dd_mapm, ee_mapm, MM_E); m_apm_copy(ee_mapm, dd_mapm); }m_apm_sqrt(dd_mapm, (numdigits + 4), ee_mapm);m_apm_divide(ee_mapm, (numdigits + 4), MM_One, dd_mapm);m_apm_round(bb_mapm, numdigits, ee_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"\n");fprintf(stdout,"1 / SQRT(E ^ 13) = \n[%s]\n",buffer);m_apm_set_string(ee_mapm, "-6.5");m_apm_exp(aa_mapm, numdigits, ee_mapm);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"EXP(-6.5) = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: EXP(-6.5) == 1 / SQRT(E ^ 13)\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: EXP(-6.5) != 1 / SQRT(E ^ 13)\n"); }m_apm_copy(ee_mapm, MM_One);for (i=1; i <= 85; i++) { m_apm_multiply(dd_mapm, ee_mapm, MM_E); m_apm_round(ee_mapm, (numdigits + 4), dd_mapm); }m_apm_sqrt(bb_mapm, numdigits, ee_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"\n");fprintf(stdout,"SQRT(E ^ 85) = \n[%s]\n",buffer);m_apm_set_string(ee_mapm, "42.5");m_apm_exp(aa_mapm, numdigits, ee_mapm);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"EXP(42.5) = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: EXP(42.5) == SQRT(E ^ 85)\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: EXP(42.5) != SQRT(E ^ 85)\n"); }m_apm_round(aa_mapm, numdigits, MM_LOG_10_BASE_E);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"\n");fprintf(stdout,"LOG_10_BASE_E = \n[%s]\n",buffer);m_apm_log(bb_mapm, numdigits, MM_Ten);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"LOG(10) = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: LOG(10) == LOG_10_BASE_E\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: LOG(10) != LOG_10_BASE_E\n"); }m_apm_round(aa_mapm, numdigits, MM_LOG_E_BASE_10);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"\n");fprintf(stdout,"LOG_E_BASE_10 = \n[%s]\n",buffer);m_apm_log10(bb_mapm, numdigits, MM_E);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"LOG10(E) = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: LOG10(E) == LOG_E_BASE_10\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: LOG10(E) != LOG_E_BASE_10\n"); }m_apm_round(aa_mapm, numdigits, MM_LOG_2_BASE_E);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"\n");fprintf(stdout,"LOG_2_BASE_E = \n[%s]\n",buffer);m_apm_log(bb_mapm, numdigits, MM_Two);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"LOG(2) = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: LOG(2) == LOG_2_BASE_E\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: LOG(2) != LOG_2_BASE_E\n"); }m_apm_round(aa_mapm, numdigits, MM_LOG_3_BASE_E);m_apm_to_string(buffer, -1, aa_mapm);fprintf(stdout,"\n");fprintf(stdout,"LOG_3_BASE_E = \n[%s]\n",buffer);m_apm_set_long(ee_mapm, 3L);m_apm_log(bb_mapm, numdigits, ee_mapm);m_apm_to_string(buffer, -1, bb_mapm);fprintf(stdout,"LOG(3) = \n[%s]\n",buffer);k = m_apm_compare(aa_mapm, bb_mapm);if (k == 0) fprintf(stdout,"PASS: LOG(3) == LOG_3_BASE_E\n");else { total_pass = FALSE; fprintf(stdout,"FAIL: LOG(3) != LOG_3_BASE_E\n"); }if (total_pass) fprintf(stdout,"\nvalidate : PASS\n\n");else fprintf(stdout,"\nvalidate : FAIL\n\n");m_apm_free(aa_mapm);m_apm_free(bb_mapm);m_apm_free(cc_mapm);m_apm_free(dd_mapm);m_apm_free(ee_mapm);free(num1);free(num2);free(answer);exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -