00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "functions.h"
00025 #include "valuecalc.h"
00026
00027 using namespace KSpread;
00028
00029
00030 Value func_acos (valVector args, ValueCalc *calc, FuncExtra *);
00031 Value func_acosh (valVector args, ValueCalc *calc, FuncExtra *);
00032 Value func_acot (valVector args, ValueCalc *calc, FuncExtra *);
00033 Value func_asinh (valVector args, ValueCalc *calc, FuncExtra *);
00034 Value func_asin (valVector args, ValueCalc *calc, FuncExtra *);
00035 Value func_atan (valVector args, ValueCalc *calc, FuncExtra *);
00036 Value func_atan2 (valVector args, ValueCalc *calc, FuncExtra *);
00037 Value func_atanh (valVector args, ValueCalc *calc, FuncExtra *);
00038 Value func_cos (valVector args, ValueCalc *calc, FuncExtra *);
00039 Value func_cosh (valVector args, ValueCalc *calc, FuncExtra *);
00040 Value func_degrees (valVector args, ValueCalc *calc, FuncExtra *);
00041 Value func_radians (valVector args, ValueCalc *calc, FuncExtra *);
00042 Value func_sin (valVector args, ValueCalc *calc, FuncExtra *);
00043 Value func_sinh (valVector args, ValueCalc *calc, FuncExtra *);
00044 Value func_tan (valVector args, ValueCalc *calc, FuncExtra *);
00045 Value func_tanh (valVector args, ValueCalc *calc, FuncExtra *);
00046 Value func_pi (valVector args, ValueCalc *calc, FuncExtra *);
00047
00048
00049 void RegisterTrigFunctions()
00050 {
00051 FunctionRepository* repo = FunctionRepository::self();
00052 Function *f;
00053
00054 f = new Function ("ACOS", func_acos);
00055 repo->add (f);
00056 f = new Function ("ACOSH", func_acosh);
00057 repo->add (f);
00058 f = new Function ("ACOT", func_acot);
00059 repo->add (f);
00060 f = new Function ("ASIN", func_asin);
00061 repo->add (f);
00062 f = new Function ("ASINH", func_asinh);
00063 repo->add (f);
00064 f = new Function ("ATAN", func_atan);
00065 repo->add (f);
00066 f = new Function ("ATAN2", func_atan2);
00067 f->setParamCount (2);
00068 repo->add (f);
00069 f = new Function ("ATANH", func_atanh);
00070 repo->add (f);
00071 f = new Function ("COS", func_cos);
00072 repo->add (f);
00073 f = new Function ("COSH", func_cosh);
00074 repo->add (f);
00075 f = new Function ("DEGREES",func_degrees);
00076 repo->add (f);
00077 f = new Function ("RADIANS",func_radians);
00078 repo->add (f);
00079 f = new Function ("SIN", func_sin);
00080 repo->add (f);
00081 f = new Function ("SINH", func_sinh);
00082 repo->add (f);
00083 f = new Function ("TAN", func_tan);
00084 repo->add (f);
00085 f = new Function ("TANH", func_tanh);
00086 repo->add (f);
00087 f = new Function ("PI", func_pi);
00088 f->setParamCount (0);
00089 repo->add (f);
00090 }
00091
00092
00093 Value func_sin (valVector args, ValueCalc *calc, FuncExtra *)
00094 {
00095 return calc->sin (args[0]);
00096 }
00097
00098
00099 Value func_cos (valVector args, ValueCalc *calc, FuncExtra *)
00100 {
00101 return calc->cos (args[0]);
00102 }
00103
00104
00105 Value func_tan (valVector args, ValueCalc *calc, FuncExtra *)
00106 {
00107 return calc->tg (args[0]);
00108 }
00109
00110
00111 Value func_atan (valVector args, ValueCalc *calc, FuncExtra *)
00112 {
00113 return calc->atg (args[0]);
00114 }
00115
00116
00117 Value func_asin (valVector args, ValueCalc *calc, FuncExtra *)
00118 {
00119 return calc->asin (args[0]);
00120 }
00121
00122
00123 Value func_acos (valVector args, ValueCalc *calc, FuncExtra *)
00124 {
00125 return calc->acos (args[0]);
00126 }
00127
00128 Value func_acot (valVector args, ValueCalc *calc, FuncExtra *)
00129 {
00130
00131 return calc->sub (calc->div (calc->pi(), 2), calc->atg (args[0]));
00132 }
00133
00134
00135 Value func_asinh (valVector args, ValueCalc *calc, FuncExtra *)
00136 {
00137 return calc->asinh (args[0]);
00138 }
00139
00140
00141 Value func_acosh (valVector args, ValueCalc *calc, FuncExtra *)
00142 {
00143 return calc->acosh (args[0]);
00144 }
00145
00146
00147 Value func_atanh (valVector args, ValueCalc *calc, FuncExtra *)
00148 {
00149 return calc->atgh (args[0]);
00150 }
00151
00152
00153 Value func_tanh (valVector args, ValueCalc *calc, FuncExtra *)
00154 {
00155 return calc->tgh (args[0]);
00156 }
00157
00158
00159 Value func_sinh (valVector args, ValueCalc *calc, FuncExtra *)
00160 {
00161 return calc->sinh (args[0]);
00162 }
00163
00164
00165 Value func_cosh (valVector args, ValueCalc *calc, FuncExtra *)
00166 {
00167 return calc->cosh (args[0]);
00168 }
00169
00170
00171 Value func_degrees (valVector args, ValueCalc *calc, FuncExtra *)
00172 {
00173
00174 return calc->div (calc->mul (args[0], 180.0), calc->pi());
00175 }
00176
00177
00178 Value func_radians (valVector args, ValueCalc *calc, FuncExtra *)
00179 {
00180
00181 return calc->mul (calc->div (args[0], 180.0), calc->pi());
00182 }
00183
00184
00185 Value func_pi (valVector, ValueCalc *calc, FuncExtra *)
00186 {
00187 return calc->pi();
00188 }
00189
00190
00191 Value func_atan2 (valVector args, ValueCalc *calc, FuncExtra *)
00192 {
00193 return calc->atan2 (args[1], args[0]);
00194 }