Listing 1: Using the C++ wrapper class with MAPM
// // Example MAPM C++ code with output. // // Note the use of literal character strings as constants. // // This allows the user to specify constants that cannot be // represented by a standard C datatype, such as a number with // 200 digits or a number with a very large or small exponent // (i.e., 6.21E-3714). // char outbuf[256]; MAPM u, v, w, x, y, z; // arbitrary precision datatype m_apm_cpp_precision(50); // set MINIMUM precision level // for all calculations x = 9.34231; y = -21; z = "-8.982349249829824921479824924792347921E-17"; w = (82.30421 + sin(x / "21.11") / exp(y * 0.0726426)) * "4.32917E-2" / z; v = "3.742416" * log(-w); u = sqrt(v) + cbrt(v); x.toString(outbuf, 50); printf("x = [%s] \n",outbuf); y.toString(outbuf, 50); printf("y = [%s] \n",outbuf); z.toString(outbuf, 50); printf("z = [%s] \n",outbuf); w.toString(outbuf, 50); printf("w = [%s] \n",outbuf); v.toString(outbuf, 50); printf("v = [%s] \n",outbuf); u.toString(outbuf, 50); printf("u = [%s] \n",outbuf); // // end sample code // /* Output from above code : x = [9.34231000000000000000000000000000000000000000000000E+0] y = [-2.10000000000000000000000000000000000000000000000000E+1] z = [-8.98234924982982492147982492479234792100000000000000E-17] w = [-4.06165846135776503301770738763183914451375637893923E+16] v = [1.43121038693447060414449698088102300924570797933606E+2] u = [1.71941170788317776083850581271655444461072359345223E+1] */ End of Listing