Example: all trigonometric functions with complex numbers in c/c++
#include "stdafx.h"
#include "calc.h"
double INF = DBL_MAX;
double mINF = INF * -1;
void cotan(double x, double y) {
resultR = 0; resultI = 0;
if (x >= mINF && x <= INF && y >= mINF && y <= INF) {
complex_tan(x, y);
division(1.0, 0.0, resultR, resultI);
}
else {
if (rasf > 0) {
printf("\nError in function domain.\n\n ==> For cotangent function the valid domain is {x| x != 0 + kpi, k = ..., -1, 0, 1, ...} \n\n");
printf(" ==> Your function argument: ");
complexNumber(x, y);
}
}
}
void sec(double x, double y) {
resultR = 0; resultI = 0;
if (x >= mINF && x <= INF && y >= mINF && y <= INF) {
complex_cos(x, y);
division(1.0, 0.0, resultR, resultI);
}
else {
if (rasf > 0) {
printf("\nError in function domain.\n\n ==> For secant function the valid domain is {x| x != pi/2 + kpi, k = ..., -1, 0, 1, ...} \n\n");
printf(" ==> Your function argument: ");
complexNumber(x, y);
}
}
}
void cosec(double x, double y) {
resultR = 0; resultI = 0;
if (x >= mINF && x <= INF && y >= mINF && y <= INF) {
complex_sin(x, y);
division(1.0, 0.0, resultR, resultI);
}
else {
if (rasf > 0) {
printf("\nError in function domain.\n\n ==> For cosecant function the valid domain is {x| x != 0 + kpi, k = ..., -1, 0, 1, ...} \n\n");
printf(" ==> Your function argument: ");
complexNumber(x, y);
}
}
}
void arcosec(double x, double y) {
resultR = 0; resultI = 0;
if (x >= mINF && x <= INF && y >= mINF && y <= INF) {
division(1.0, 0.0, x, y);
complex_asin(resultR, resultI);
}
else {
if (rasf > 0) {
printf("\nError in function domain.\n\n ==> For arc cosecant function the valid domain is [-INF, INF] ^ != [-1, 1].\n\n");
printf(" ==> Your function argument: ");
complexNumber(x, y);
}
}
}
void arcsec(double x, double y) {
resultR = 0; resultI = 0;
if (x >= mINF && x <= INF && y >= mINF && y <= INF) {
division(1.0, 0.0, x, y);
complex_acos(resultR, resultI);
}
else {
if (rasf > 0) {
printf("\nError in function domain.\n\n ==> For arc secant function the valid domain is ]-INF, INF[ ^ != [-1, 1].\n\n");
printf(" ==> Your function argument: ");
complexNumber(x, y);
}
}
}
void arcotg(double x, double y) {
resultR = 0; resultI = 0;
if (x >= mINF && x <= INF && y >= mINF && y <= INF) {
division(1.0, 0.0, x, y);
complex_atan(resultR, resultI);
}
else {
if (rasf > 0) {
printf("\nError in function domain.\n\n ==> For arc cotangent function the valid domain is [-INF, INF].\n\n");
printf(" ==> Your function argument: ");
complexNumber(x, y);
}
}
}
void complex_cos(double x, double y) {
resultR = 0; resultI = 0;
if (x >= mINF && x <= INF && y >= mINF && y <= INF) {
exponentiation(M_E, 0.0, -1 * y, x, 1);
double napR = resultR, napI = resultI;
exponentiation(M_E, 0.0, y, -1 * x, 1);
double nap2R = resultR, nap2I = resultI;
sum(napR, napI, nap2R, nap2I);
double sumR = resultR, sumI = resultI;
division(sumR, sumI, 2.0, 0.0);
}
else {
if (rasf > 0) {
printf("\nError in function domain.\n\n ==> For cosine function the valid domain is [-INF, INF].\n\n");
printf(" ==> Your function argument: ");
complexNumber(x, y);
}
}
}