Listing 2: Test program
// Test program for math-complex.h. This file can be
// compiled by either C99 or C++.
// An extended version of this test is available on
// the CUJ website at www.cuj.com/code.
#include <stdio.h>
#include "math-complex.h"
static const long double pi =
3.141592653589793238462643383279502884197L;
int main()
{
// Establish the size of floating point type on
// this platform. Note on some platforms, two or
// more of these datatypes may have the same size.
printf("sizeof(float) = %d\n", (int) sizeof(float));
printf("sizeof(double) = %d\n", (int) sizeof(double));
printf("sizeof(long double) = %d\n", (int) sizeof(long double));
// The overloaded library function sin() should return
// the same type as its argument. So, take the sizeof
// function calls passing a float, double, and long
// double to see if the function result has sizeof
// a float, double, and long double, respectively.
printf("sizeof sin(0.0F) = %d\n", (int) sizeof sin(0.0F));
printf("sizeof sin(0.0) = %d\n", (int) sizeof sin(0.0));
printf("sizeof sin(0.0L) = %d\n", (int) sizeof sin(0.0L));
// arc sine of 1 is pi/2. Try this for the three real
// floating point types and see if the result is more
// precise as the float point type gets more precise.
printf("pi/2 = %.20Lf\n", pi/2);
printf("asin(1.0F) = %.20f error=%Lg\n",
asin(1.0F), asin(1.0F) - pi/2);
printf("asin(1.0) = %.20f error=%Lg\n",
asin(1.0), asin(1.0) - pi/2);
printf("asin(1.0L) = %.20Lf error=%Lg\n",
asin(1.0L), asin(1.0L) - pi/2);
return 0;
}
-- End of Listing --