File indexing completed on 2024-05-12 16:35:59
0001 /* This file is part of the KDE project 0002 Copyright 2007 Ariya Hidayat <ariya@kde.org> 0003 0004 This library is free software; you can redistribute it and/or 0005 modify it under the terms of the GNU Library General Public 0006 License as published by the Free Software Foundation; only 0007 version 2 of the License. 0008 0009 This library is distributed in the hope that it will be useful, 0010 but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0012 Library General Public License for more details. 0013 0014 You should have received a copy of the GNU Library General Public License 0015 along with this library; see the file COPYING.LIB. If not, write to 0016 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 0017 Boston, MA 02110-1301, USA. 0018 */ 0019 #include "TestTrigFunctions.h" 0020 0021 #include "TestKspreadCommon.h" 0022 0023 void TestTrigFunctions::initTestCase() 0024 { 0025 FunctionModuleRegistry::instance()->loadFunctionModules(); 0026 } 0027 0028 // NOTE: we do not compare the numbers _exactly_ because it is difficult 0029 // to get one "true correct" expected values for the functions due to: 0030 // - different algorithms among spreadsheet programs 0031 // - precision limitation of floating-point number representation 0032 // - accuracy problem due to propagated error in the implementation 0033 #define CHECK_EVAL(x,y) QCOMPARE(evaluate(x),RoundNumber(y)) 0034 #define ROUND(x) (roundf(1e10 * x) / 1e10) 0035 0036 // round to get at most 10-digits number 0037 static Value RoundNumber(double f) 0038 { 0039 return Value(ROUND(f)); 0040 } 0041 0042 // round to get at most 10-digits number 0043 static Value RoundNumber(const Value& v) 0044 { 0045 if (v.isNumber()) { 0046 double d = numToDouble(v.asFloat()); 0047 if (fabs(d) < DBL_EPSILON) 0048 d = 0.0; 0049 return Value(ROUND(d)); 0050 } else 0051 return v; 0052 } 0053 0054 Value TestTrigFunctions::evaluate(const QString& formula) 0055 { 0056 Formula f; 0057 QString expr = formula; 0058 if (expr[0] != '=') 0059 expr.prepend('='); 0060 f.setExpression(expr); 0061 Value result = f.eval(); 0062 0063 #if 0 0064 // this magically generates the CHECKs 0065 printf(" CHECK_EVAL( \"%s\", %15g) );\n", qPrintable(formula), result.asFloat()); 0066 #endif 0067 0068 return RoundNumber(result); 0069 } 0070 0071 void TestTrigFunctions::testCOS() 0072 { 0073 // some trivial cases 0074 CHECK_EVAL("COS(0)", 1); 0075 CHECK_EVAL("COS(PI()/2)", 0); 0076 CHECK_EVAL("COS(PI())", -1); 0077 CHECK_EVAL("COS(-PI()/2)", 0); 0078 0079 // 128 points in a circle 0080 CHECK_EVAL("COS( 0*2*PI()/128 )", 1.000000000000000); 0081 CHECK_EVAL("COS( 1*2*PI()/128 )", 0.998795456205172); 0082 CHECK_EVAL("COS( 2*2*PI()/128 )", 0.995184726672197); 0083 CHECK_EVAL("COS( 3*2*PI()/128 )", 0.989176509964781); 0084 CHECK_EVAL("COS( 4*2*PI()/128 )", 0.980785280403230); 0085 CHECK_EVAL("COS( 5*2*PI()/128 )", 0.970031253194544); 0086 CHECK_EVAL("COS( 6*2*PI()/128 )", 0.956940335732209); 0087 CHECK_EVAL("COS( 7*2*PI()/128 )", 0.941544065183021); 0088 CHECK_EVAL("COS( 8*2*PI()/128 )", 0.923879532511287); 0089 CHECK_EVAL("COS( 9*2*PI()/128 )", 0.903989293123443); 0090 CHECK_EVAL("COS( 10*2*PI()/128 )", 0.881921264348355); 0091 CHECK_EVAL("COS( 11*2*PI()/128 )", 0.857728610000272); 0092 CHECK_EVAL("COS( 12*2*PI()/128 )", 0.831469612302545); 0093 CHECK_EVAL("COS( 13*2*PI()/128 )", 0.803207531480645); 0094 CHECK_EVAL("COS( 14*2*PI()/128 )", 0.773010453362737); 0095 CHECK_EVAL("COS( 15*2*PI()/128 )", 0.740951125354959); 0096 CHECK_EVAL("COS( 16*2*PI()/128 )", 0.707106781186548); 0097 CHECK_EVAL("COS( 17*2*PI()/128 )", 0.671558954847018); 0098 CHECK_EVAL("COS( 18*2*PI()/128 )", 0.634393284163645); 0099 CHECK_EVAL("COS( 19*2*PI()/128 )", 0.595699304492433); 0100 CHECK_EVAL("COS( 20*2*PI()/128 )", 0.555570233019602); 0101 CHECK_EVAL("COS( 21*2*PI()/128 )", 0.514102744193222); 0102 CHECK_EVAL("COS( 22*2*PI()/128 )", 0.471396736825998); 0103 CHECK_EVAL("COS( 23*2*PI()/128 )", 0.427555093430282); 0104 CHECK_EVAL("COS( 24*2*PI()/128 )", 0.382683432365090); 0105 CHECK_EVAL("COS( 25*2*PI()/128 )", 0.336889853392220); 0106 CHECK_EVAL("COS( 26*2*PI()/128 )", 0.290284677254462); 0107 CHECK_EVAL("COS( 27*2*PI()/128 )", 0.242980179903264); 0108 CHECK_EVAL("COS( 28*2*PI()/128 )", 0.195090322016128); 0109 CHECK_EVAL("COS( 29*2*PI()/128 )", 0.146730474455362); 0110 CHECK_EVAL("COS( 30*2*PI()/128 )", 0.0980171403295608); 0111 CHECK_EVAL("COS( 31*2*PI()/128 )", 0.0490676743274181); 0112 CHECK_EVAL("COS( 32*2*PI()/128 )", 0.000000000000000); 0113 CHECK_EVAL("COS( 33*2*PI()/128 )", -0.0490676743274180); 0114 CHECK_EVAL("COS( 34*2*PI()/128 )", -0.0980171403295606); 0115 CHECK_EVAL("COS( 35*2*PI()/128 )", -0.146730474455362); 0116 CHECK_EVAL("COS( 36*2*PI()/128 )", -0.195090322016128); 0117 CHECK_EVAL("COS( 37*2*PI()/128 )", -0.242980179903264); 0118 CHECK_EVAL("COS( 38*2*PI()/128 )", -0.290284677254462); 0119 CHECK_EVAL("COS( 39*2*PI()/128 )", -0.336889853392220); 0120 CHECK_EVAL("COS( 40*2*PI()/128 )", -0.382683432365090); 0121 CHECK_EVAL("COS( 41*2*PI()/128 )", -0.427555093430282); 0122 CHECK_EVAL("COS( 42*2*PI()/128 )", -0.471396736825998); 0123 CHECK_EVAL("COS( 43*2*PI()/128 )", -0.514102744193222); 0124 CHECK_EVAL("COS( 44*2*PI()/128 )", -0.555570233019602); 0125 CHECK_EVAL("COS( 45*2*PI()/128 )", -0.595699304492433); 0126 CHECK_EVAL("COS( 46*2*PI()/128 )", -0.634393284163645); 0127 CHECK_EVAL("COS( 47*2*PI()/128 )", -0.671558954847018); 0128 CHECK_EVAL("COS( 48*2*PI()/128 )", -0.707106781186547); 0129 CHECK_EVAL("COS( 49*2*PI()/128 )", -0.740951125354959); 0130 CHECK_EVAL("COS( 50*2*PI()/128 )", -0.773010453362737); 0131 CHECK_EVAL("COS( 51*2*PI()/128 )", -0.803207531480645); 0132 CHECK_EVAL("COS( 52*2*PI()/128 )", -0.831469612302545); 0133 CHECK_EVAL("COS( 53*2*PI()/128 )", -0.857728610000272); 0134 CHECK_EVAL("COS( 54*2*PI()/128 )", -0.881921264348355); 0135 CHECK_EVAL("COS( 55*2*PI()/128 )", -0.903989293123443); 0136 CHECK_EVAL("COS( 56*2*PI()/128 )", -0.923879532511287); 0137 CHECK_EVAL("COS( 57*2*PI()/128 )", -0.941544065183021); 0138 CHECK_EVAL("COS( 58*2*PI()/128 )", -0.956940335732209); 0139 CHECK_EVAL("COS( 59*2*PI()/128 )", -0.970031253194544); 0140 CHECK_EVAL("COS( 60*2*PI()/128 )", -0.980785280403230); 0141 CHECK_EVAL("COS( 61*2*PI()/128 )", -0.989176509964781); 0142 CHECK_EVAL("COS( 62*2*PI()/128 )", -0.995184726672197); 0143 CHECK_EVAL("COS( 63*2*PI()/128 )", -0.998795456205172); 0144 CHECK_EVAL("COS( 64*2*PI()/128 )", -1.000000000000000); 0145 CHECK_EVAL("COS( 65*2*PI()/128 )", -0.998795456205172); 0146 CHECK_EVAL("COS( 66*2*PI()/128 )", -0.995184726672197); 0147 CHECK_EVAL("COS( 67*2*PI()/128 )", -0.989176509964781); 0148 CHECK_EVAL("COS( 68*2*PI()/128 )", -0.980785280403230); 0149 CHECK_EVAL("COS( 69*2*PI()/128 )", -0.970031253194544); 0150 CHECK_EVAL("COS( 70*2*PI()/128 )", -0.956940335732209); 0151 CHECK_EVAL("COS( 71*2*PI()/128 )", -0.941544065183021); 0152 CHECK_EVAL("COS( 72*2*PI()/128 )", -0.923879532511287); 0153 CHECK_EVAL("COS( 73*2*PI()/128 )", -0.903989293123443); 0154 CHECK_EVAL("COS( 74*2*PI()/128 )", -0.881921264348355); 0155 CHECK_EVAL("COS( 75*2*PI()/128 )", -0.857728610000272); 0156 CHECK_EVAL("COS( 76*2*PI()/128 )", -0.831469612302545); 0157 CHECK_EVAL("COS( 77*2*PI()/128 )", -0.803207531480645); 0158 CHECK_EVAL("COS( 78*2*PI()/128 )", -0.773010453362737); 0159 CHECK_EVAL("COS( 79*2*PI()/128 )", -0.740951125354959); 0160 CHECK_EVAL("COS( 80*2*PI()/128 )", -0.707106781186548); 0161 CHECK_EVAL("COS( 81*2*PI()/128 )", -0.671558954847019); 0162 CHECK_EVAL("COS( 82*2*PI()/128 )", -0.634393284163646); 0163 CHECK_EVAL("COS( 83*2*PI()/128 )", -0.595699304492433); 0164 CHECK_EVAL("COS( 84*2*PI()/128 )", -0.555570233019602); 0165 CHECK_EVAL("COS( 85*2*PI()/128 )", -0.514102744193222); 0166 CHECK_EVAL("COS( 86*2*PI()/128 )", -0.471396736825998); 0167 CHECK_EVAL("COS( 87*2*PI()/128 )", -0.427555093430282); 0168 CHECK_EVAL("COS( 88*2*PI()/128 )", -0.382683432365090); 0169 CHECK_EVAL("COS( 89*2*PI()/128 )", -0.336889853392220); 0170 CHECK_EVAL("COS( 90*2*PI()/128 )", -0.290284677254462); 0171 CHECK_EVAL("COS( 91*2*PI()/128 )", -0.242980179903264); 0172 CHECK_EVAL("COS( 92*2*PI()/128 )", -0.195090322016129); 0173 CHECK_EVAL("COS( 93*2*PI()/128 )", -0.146730474455362); 0174 CHECK_EVAL("COS( 94*2*PI()/128 )", -0.0980171403295605); 0175 CHECK_EVAL("COS( 95*2*PI()/128 )", -0.0490676743274180); 0176 CHECK_EVAL("COS( 96*2*PI()/128 )", -0.000000000000000); 0177 CHECK_EVAL("COS( 97*2*PI()/128 )", 0.0490676743274177); 0178 CHECK_EVAL("COS( 98*2*PI()/128 )", 0.0980171403295601); 0179 CHECK_EVAL("COS( 99*2*PI()/128 )", 0.146730474455362); 0180 CHECK_EVAL("COS( 100*2*PI()/128 )", 0.195090322016128); 0181 CHECK_EVAL("COS( 101*2*PI()/128 )", 0.242980179903264); 0182 CHECK_EVAL("COS( 102*2*PI()/128 )", 0.290284677254462); 0183 CHECK_EVAL("COS( 103*2*PI()/128 )", 0.336889853392220); 0184 CHECK_EVAL("COS( 104*2*PI()/128 )", 0.382683432365090); 0185 CHECK_EVAL("COS( 105*2*PI()/128 )", 0.427555093430282); 0186 CHECK_EVAL("COS( 106*2*PI()/128 )", 0.471396736825998); 0187 CHECK_EVAL("COS( 107*2*PI()/128 )", 0.514102744193222); 0188 CHECK_EVAL("COS( 108*2*PI()/128 )", 0.555570233019602); 0189 CHECK_EVAL("COS( 109*2*PI()/128 )", 0.595699304492433); 0190 CHECK_EVAL("COS( 110*2*PI()/128 )", 0.634393284163646); 0191 CHECK_EVAL("COS( 111*2*PI()/128 )", 0.671558954847018); 0192 CHECK_EVAL("COS( 112*2*PI()/128 )", 0.707106781186547); 0193 CHECK_EVAL("COS( 113*2*PI()/128 )", 0.740951125354959); 0194 CHECK_EVAL("COS( 114*2*PI()/128 )", 0.773010453362737); 0195 CHECK_EVAL("COS( 115*2*PI()/128 )", 0.803207531480645); 0196 CHECK_EVAL("COS( 116*2*PI()/128 )", 0.831469612302545); 0197 CHECK_EVAL("COS( 117*2*PI()/128 )", 0.857728610000272); 0198 CHECK_EVAL("COS( 118*2*PI()/128 )", 0.881921264348355); 0199 CHECK_EVAL("COS( 119*2*PI()/128 )", 0.903989293123443); 0200 CHECK_EVAL("COS( 120*2*PI()/128 )", 0.923879532511287); 0201 CHECK_EVAL("COS( 121*2*PI()/128 )", 0.941544065183021); 0202 CHECK_EVAL("COS( 122*2*PI()/128 )", 0.956940335732209); 0203 CHECK_EVAL("COS( 123*2*PI()/128 )", 0.970031253194544); 0204 CHECK_EVAL("COS( 124*2*PI()/128 )", 0.980785280403230); 0205 CHECK_EVAL("COS( 125*2*PI()/128 )", 0.989176509964781); 0206 CHECK_EVAL("COS( 126*2*PI()/128 )", 0.995184726672197); 0207 CHECK_EVAL("COS( 127*2*PI()/128 )", 0.998795456205172); 0208 0209 // Cosinus needs to be a numeric value 0210 CHECK_EVAL("COS(raghu)", Value::errorVALUE()); 0211 CHECK_EVAL("COS()", Value::errorVALUE()); 0212 0213 CHECK_EVAL("1+COS(0.2)", Value(1.980066578)); 0214 } 0215 0216 // hyperbolic cosine 0217 void TestTrigFunctions::testCOSH() 0218 { 0219 CHECK_EVAL("COSH( 0*PI()/64 )", 1.00000000000000); 0220 CHECK_EVAL("COSH( 1*PI()/64 )", 1.00120502763102); 0221 CHECK_EVAL("COSH( 2*PI()/64 )", 1.00482301470726); 0222 CHECK_EVAL("COSH( 3*PI()/64 )", 1.01086268077751); 0223 CHECK_EVAL("COSH( 4*PI()/64 )", 1.01933858177076); 0224 CHECK_EVAL("COSH( 5*PI()/64 )", 1.03027114507681); 0225 CHECK_EVAL("COSH( 6*PI()/64 )", 1.04368671877737); 0226 CHECK_EVAL("COSH( 7*PI()/64 )", 1.05961763514644); 0227 CHECK_EVAL("COSH( 8*PI()/64 )", 1.07810228857284); 0228 CHECK_EVAL("COSH( 9*PI()/64 )", 1.09918522809284); 0229 CHECK_EVAL("COSH( 10*PI()/64 )", 1.12291726475574); 0230 CHECK_EVAL("COSH( 11*PI()/64 )", 1.14935559408141); 0231 CHECK_EVAL("COSH( 12*PI()/64 )", 1.17856393390454); 0232 CHECK_EVAL("COSH( 13*PI()/64 )", 1.21061267793823); 0233 CHECK_EVAL("COSH( 14*PI()/64 )", 1.24557906542667); 0234 CHECK_EVAL("COSH( 15*PI()/64 )", 1.28354736729603); 0235 CHECK_EVAL("COSH( 16*PI()/64 )", 1.32460908925201); 0236 CHECK_EVAL("COSH( 17*PI()/64 )", 1.36886319231368); 0237 CHECK_EVAL("COSH( 18*PI()/64 )", 1.41641633131500); 0238 CHECK_EVAL("COSH( 19*PI()/64 )", 1.46738311194883); 0239 CHECK_EVAL("COSH( 20*PI()/64 )", 1.52188636697305); 0240 CHECK_EVAL("COSH( 21*PI()/64 )", 1.58005745224421); 0241 CHECK_EVAL("COSH( 22*PI()/64 )", 1.64203656329247); 0242 CHECK_EVAL("COSH( 23*PI()/64 )", 1.70797307320055); 0243 CHECK_EVAL("COSH( 24*PI()/64 )", 1.77802589260111); 0244 CHECK_EVAL("COSH( 25*PI()/64 )", 1.85236385266018); 0245 CHECK_EVAL("COSH( 26*PI()/64 )", 1.93116611196955); 0246 CHECK_EVAL("COSH( 27*PI()/64 )", 2.01462258832895); 0247 CHECK_EVAL("COSH( 28*PI()/64 )", 2.10293441645836); 0248 CHECK_EVAL("COSH( 29*PI()/64 )", 2.19631443274388); 0249 CHECK_EVAL("COSH( 30*PI()/64 )", 2.29498768818512); 0250 CHECK_EVAL("COSH( 31*PI()/64 )", 2.39919199078058); 0251 CHECK_EVAL("COSH( 32*PI()/64 )", 2.50917847865806); 0252 CHECK_EVAL("COSH( 33*PI()/64 )", 2.62521222533141); 0253 CHECK_EVAL("COSH( 34*PI()/64 )", 2.74757287854239); 0254 CHECK_EVAL("COSH( 35*PI()/64 )", 2.87655533422713); 0255 CHECK_EVAL("COSH( 36*PI()/64 )", 3.01247044723167); 0256 CHECK_EVAL("COSH( 37*PI()/64 )", 3.15564578048928); 0257 CHECK_EVAL("COSH( 38*PI()/64 )", 3.30642639446529); 0258 CHECK_EVAL("COSH( 39*PI()/64 )", 3.46517567877181); 0259 CHECK_EVAL("COSH( 40*PI()/64 )", 3.63227622795684); 0260 CHECK_EVAL("COSH( 41*PI()/64 )", 3.80813076357823); 0261 CHECK_EVAL("COSH( 42*PI()/64 )", 3.99316310478491); 0262 CHECK_EVAL("COSH( 43*PI()/64 )", 4.18781918974444); 0263 CHECK_EVAL("COSH( 44*PI()/64 )", 4.39256815037867); 0264 CHECK_EVAL("COSH( 45*PI()/64 )", 4.60790344299758); 0265 CHECK_EVAL("COSH( 46*PI()/64 )", 4.83434403755624); 0266 CHECK_EVAL("COSH( 47*PI()/64 )", 5.07243566840111); 0267 CHECK_EVAL("COSH( 48*PI()/64 )", 5.32275214951996); 0268 CHECK_EVAL("COSH( 49*PI()/64 )", 5.58589675746527); 0269 CHECK_EVAL("COSH( 50*PI()/64 )", 5.86250368528411); 0270 CHECK_EVAL("COSH( 51*PI()/64 )", 6.15323957095837); 0271 CHECK_EVAL("COSH( 52*PI()/64 )", 6.45880510403919); 0272 CHECK_EVAL("COSH( 53*PI()/64 )", 6.77993671434747); 0273 CHECK_EVAL("COSH( 54*PI()/64 )", 7.11740834681045); 0274 CHECK_EVAL("COSH( 55*PI()/64 )", 7.47203332671172); 0275 CHECK_EVAL("COSH( 56*PI()/64 )", 7.84466631985014); 0276 CHECK_EVAL("COSH( 57*PI()/64 )", 8.23620539233163); 0277 CHECK_EVAL("COSH( 58*PI()/64 )", 8.64759417495814); 0278 CHECK_EVAL("COSH( 59*PI()/64 )", 9.07982413742996); 0279 CHECK_EVAL("COSH( 60*PI()/64 )", 9.53393697784256); 0280 CHECK_EVAL("COSH( 61*PI()/64 )", 10.0110271332365); 0281 CHECK_EVAL("COSH( 62*PI()/64 )", 10.5122444172514); 0282 CHECK_EVAL("COSH( 63*PI()/64 )", 11.0387967912398); 0283 } 0284 0285 void TestTrigFunctions::testPI() 0286 { 0287 CHECK_EVAL("PI()", 3.14159265358979); 0288 CHECK_EVAL("2*PI()", 6.28318530717959); 0289 CHECK_EVAL("3*PI()", 9.42477796076938); 0290 CHECK_EVAL("PI()/2", 1.57079632679490); 0291 CHECK_EVAL("PI()/PI()", 1.0); 0292 CHECK_EVAL("PI()/(2*PI())", 0.5); 0293 CHECK_EVAL("(2*PI())/(2*PI())", 1.0); 0294 } 0295 0296 void TestTrigFunctions::testSIN() 0297 { 0298 // some trivial cases 0299 CHECK_EVAL("SIN(0)", 0); 0300 CHECK_EVAL("SIN(PI()/2)", 1); 0301 CHECK_EVAL("SIN(PI())", 0); 0302 CHECK_EVAL("SIN(-PI()/2)", -1); 0303 0304 // 128 points in a circle 0305 CHECK_EVAL("SIN( 0*2*PI()/128 )", 0.000000000000000); 0306 CHECK_EVAL("SIN( 1*2*PI()/128 )", 0.049067674327418); 0307 CHECK_EVAL("SIN( 2*2*PI()/128 )", 0.0980171403295606); 0308 CHECK_EVAL("SIN( 3*2*PI()/128 )", 0.146730474455362); 0309 CHECK_EVAL("SIN( 4*2*PI()/128 )", 0.195090322016128); 0310 CHECK_EVAL("SIN( 5*2*PI()/128 )", 0.242980179903264); 0311 CHECK_EVAL("SIN( 6*2*PI()/128 )", 0.290284677254462); 0312 CHECK_EVAL("SIN( 7*2*PI()/128 )", 0.336889853392220); 0313 CHECK_EVAL("SIN( 8*2*PI()/128 )", 0.382683432365090); 0314 CHECK_EVAL("SIN( 9*2*PI()/128 )", 0.427555093430282); 0315 CHECK_EVAL("SIN( 10*2*PI()/128 )", 0.471396736825998); 0316 CHECK_EVAL("SIN( 11*2*PI()/128 )", 0.514102744193222); 0317 CHECK_EVAL("SIN( 12*2*PI()/128 )", 0.555570233019602); 0318 CHECK_EVAL("SIN( 13*2*PI()/128 )", 0.595699304492433); 0319 CHECK_EVAL("SIN( 14*2*PI()/128 )", 0.634393284163645); 0320 CHECK_EVAL("SIN( 15*2*PI()/128 )", 0.671558954847018); 0321 CHECK_EVAL("SIN( 16*2*PI()/128 )", 0.707106781186547); 0322 CHECK_EVAL("SIN( 17*2*PI()/128 )", 0.740951125354959); 0323 CHECK_EVAL("SIN( 18*2*PI()/128 )", 0.773010453362737); 0324 CHECK_EVAL("SIN( 19*2*PI()/128 )", 0.803207531480645); 0325 CHECK_EVAL("SIN( 20*2*PI()/128 )", 0.831469612302545); 0326 CHECK_EVAL("SIN( 21*2*PI()/128 )", 0.857728610000272); 0327 CHECK_EVAL("SIN( 22*2*PI()/128 )", 0.881921264348355); 0328 CHECK_EVAL("SIN( 23*2*PI()/128 )", 0.903989293123443); 0329 CHECK_EVAL("SIN( 24*2*PI()/128 )", 0.923879532511287); 0330 CHECK_EVAL("SIN( 25*2*PI()/128 )", 0.941544065183021); 0331 CHECK_EVAL("SIN( 26*2*PI()/128 )", 0.956940335732209); 0332 CHECK_EVAL("SIN( 27*2*PI()/128 )", 0.970031253194544); 0333 CHECK_EVAL("SIN( 28*2*PI()/128 )", 0.980785280403230); 0334 CHECK_EVAL("SIN( 29*2*PI()/128 )", 0.989176509964781); 0335 CHECK_EVAL("SIN( 30*2*PI()/128 )", 0.995184726672197); 0336 CHECK_EVAL("SIN( 31*2*PI()/128 )", 0.998795456205172); 0337 CHECK_EVAL("SIN( 32*2*PI()/128 )", 1.000000000000000); 0338 CHECK_EVAL("SIN( 33*2*PI()/128 )", 0.998795456205172); 0339 CHECK_EVAL("SIN( 34*2*PI()/128 )", 0.995184726672197); 0340 CHECK_EVAL("SIN( 35*2*PI()/128 )", 0.989176509964781); 0341 CHECK_EVAL("SIN( 36*2*PI()/128 )", 0.980785280403230); 0342 CHECK_EVAL("SIN( 37*2*PI()/128 )", 0.970031253194544); 0343 CHECK_EVAL("SIN( 38*2*PI()/128 )", 0.956940335732209); 0344 CHECK_EVAL("SIN( 39*2*PI()/128 )", 0.941544065183021); 0345 CHECK_EVAL("SIN( 40*2*PI()/128 )", 0.923879532511287); 0346 CHECK_EVAL("SIN( 41*2*PI()/128 )", 0.903989293123443); 0347 CHECK_EVAL("SIN( 42*2*PI()/128 )", 0.881921264348355); 0348 CHECK_EVAL("SIN( 43*2*PI()/128 )", 0.857728610000272); 0349 CHECK_EVAL("SIN( 44*2*PI()/128 )", 0.831469612302545); 0350 CHECK_EVAL("SIN( 45*2*PI()/128 )", 0.803207531480645); 0351 CHECK_EVAL("SIN( 46*2*PI()/128 )", 0.773010453362737); 0352 CHECK_EVAL("SIN( 47*2*PI()/128 )", 0.740951125354959); 0353 CHECK_EVAL("SIN( 48*2*PI()/128 )", 0.707106781186548); 0354 CHECK_EVAL("SIN( 49*2*PI()/128 )", 0.671558954847019); 0355 CHECK_EVAL("SIN( 50*2*PI()/128 )", 0.634393284163645); 0356 CHECK_EVAL("SIN( 51*2*PI()/128 )", 0.595699304492433); 0357 CHECK_EVAL("SIN( 52*2*PI()/128 )", 0.555570233019602); 0358 CHECK_EVAL("SIN( 53*2*PI()/128 )", 0.514102744193222); 0359 CHECK_EVAL("SIN( 54*2*PI()/128 )", 0.471396736825998); 0360 CHECK_EVAL("SIN( 55*2*PI()/128 )", 0.427555093430282); 0361 CHECK_EVAL("SIN( 56*2*PI()/128 )", 0.382683432365090); 0362 CHECK_EVAL("SIN( 57*2*PI()/128 )", 0.336889853392220); 0363 CHECK_EVAL("SIN( 58*2*PI()/128 )", 0.290284677254462); 0364 CHECK_EVAL("SIN( 59*2*PI()/128 )", 0.242980179903264); 0365 CHECK_EVAL("SIN( 60*2*PI()/128 )", 0.195090322016129); 0366 CHECK_EVAL("SIN( 61*2*PI()/128 )", 0.146730474455362); 0367 CHECK_EVAL("SIN( 62*2*PI()/128 )", 0.0980171403295608); 0368 CHECK_EVAL("SIN( 63*2*PI()/128 )", 0.049067674327418); 0369 CHECK_EVAL("SIN( 64*2*PI()/128 )", 0.000000000000000); 0370 CHECK_EVAL("SIN( 65*2*PI()/128 )", -0.0490676743274177); 0371 CHECK_EVAL("SIN( 66*2*PI()/128 )", -0.0980171403295606); 0372 CHECK_EVAL("SIN( 67*2*PI()/128 )", -0.146730474455362); 0373 CHECK_EVAL("SIN( 68*2*PI()/128 )", -0.195090322016128); 0374 CHECK_EVAL("SIN( 69*2*PI()/128 )", -0.242980179903264); 0375 CHECK_EVAL("SIN( 70*2*PI()/128 )", -0.290284677254462); 0376 CHECK_EVAL("SIN( 71*2*PI()/128 )", -0.336889853392220); 0377 CHECK_EVAL("SIN( 72*2*PI()/128 )", -0.382683432365090); 0378 CHECK_EVAL("SIN( 73*2*PI()/128 )", -0.427555093430282); 0379 CHECK_EVAL("SIN( 74*2*PI()/128 )", -0.471396736825998); 0380 CHECK_EVAL("SIN( 75*2*PI()/128 )", -0.514102744193222); 0381 CHECK_EVAL("SIN( 76*2*PI()/128 )", -0.555570233019602); 0382 CHECK_EVAL("SIN( 77*2*PI()/128 )", -0.595699304492433); 0383 CHECK_EVAL("SIN( 78*2*PI()/128 )", -0.634393284163645); 0384 CHECK_EVAL("SIN( 79*2*PI()/128 )", -0.671558954847018); 0385 CHECK_EVAL("SIN( 80*2*PI()/128 )", -0.707106781186547); 0386 CHECK_EVAL("SIN( 81*2*PI()/128 )", -0.740951125354959); 0387 CHECK_EVAL("SIN( 82*2*PI()/128 )", -0.773010453362737); 0388 CHECK_EVAL("SIN( 83*2*PI()/128 )", -0.803207531480645); 0389 CHECK_EVAL("SIN( 84*2*PI()/128 )", -0.831469612302545); 0390 CHECK_EVAL("SIN( 85*2*PI()/128 )", -0.857728610000272); 0391 CHECK_EVAL("SIN( 86*2*PI()/128 )", -0.881921264348355); 0392 CHECK_EVAL("SIN( 87*2*PI()/128 )", -0.903989293123443); 0393 CHECK_EVAL("SIN( 88*2*PI()/128 )", -0.923879532511287); 0394 CHECK_EVAL("SIN( 89*2*PI()/128 )", -0.941544065183021); 0395 CHECK_EVAL("SIN( 90*2*PI()/128 )", -0.956940335732209); 0396 CHECK_EVAL("SIN( 91*2*PI()/128 )", -0.970031253194544); 0397 CHECK_EVAL("SIN( 92*2*PI()/128 )", -0.980785280403230); 0398 CHECK_EVAL("SIN( 93*2*PI()/128 )", -0.989176509964781); 0399 CHECK_EVAL("SIN( 94*2*PI()/128 )", -0.995184726672197); 0400 CHECK_EVAL("SIN( 95*2*PI()/128 )", -0.998795456205172); 0401 CHECK_EVAL("SIN( 96*2*PI()/128 )", -1.000000000000000); 0402 CHECK_EVAL("SIN( 97*2*PI()/128 )", -0.998795456205172); 0403 CHECK_EVAL("SIN( 98*2*PI()/128 )", -0.995184726672197); 0404 CHECK_EVAL("SIN( 99*2*PI()/128 )", -0.989176509964781); 0405 CHECK_EVAL("SIN( 100*2*PI()/128 )", -0.980785280403230); 0406 CHECK_EVAL("SIN( 101*2*PI()/128 )", -0.970031253194544); 0407 CHECK_EVAL("SIN( 102*2*PI()/128 )", -0.956940335732209); 0408 CHECK_EVAL("SIN( 103*2*PI()/128 )", -0.941544065183021); 0409 CHECK_EVAL("SIN( 104*2*PI()/128 )", -0.923879532511287); 0410 CHECK_EVAL("SIN( 105*2*PI()/128 )", -0.903989293123443); 0411 CHECK_EVAL("SIN( 106*2*PI()/128 )", -0.881921264348355); 0412 CHECK_EVAL("SIN( 107*2*PI()/128 )", -0.857728610000272); 0413 CHECK_EVAL("SIN( 108*2*PI()/128 )", -0.831469612302545); 0414 CHECK_EVAL("SIN( 109*2*PI()/128 )", -0.803207531480645); 0415 CHECK_EVAL("SIN( 110*2*PI()/128 )", -0.773010453362737); 0416 CHECK_EVAL("SIN( 111*2*PI()/128 )", -0.740951125354959); 0417 CHECK_EVAL("SIN( 112*2*PI()/128 )", -0.707106781186548); 0418 CHECK_EVAL("SIN( 113*2*PI()/128 )", -0.671558954847019); 0419 CHECK_EVAL("SIN( 114*2*PI()/128 )", -0.634393284163646); 0420 CHECK_EVAL("SIN( 115*2*PI()/128 )", -0.595699304492433); 0421 CHECK_EVAL("SIN( 116*2*PI()/128 )", -0.555570233019602); 0422 CHECK_EVAL("SIN( 117*2*PI()/128 )", -0.514102744193222); 0423 CHECK_EVAL("SIN( 118*2*PI()/128 )", -0.471396736825998); 0424 CHECK_EVAL("SIN( 119*2*PI()/128 )", -0.427555093430283); 0425 CHECK_EVAL("SIN( 120*2*PI()/128 )", -0.382683432365090); 0426 CHECK_EVAL("SIN( 121*2*PI()/128 )", -0.336889853392220); 0427 CHECK_EVAL("SIN( 122*2*PI()/128 )", -0.290284677254462); 0428 CHECK_EVAL("SIN( 123*2*PI()/128 )", -0.242980179903264); 0429 CHECK_EVAL("SIN( 124*2*PI()/128 )", -0.195090322016129); 0430 CHECK_EVAL("SIN( 125*2*PI()/128 )", -0.146730474455362); 0431 CHECK_EVAL("SIN( 126*2*PI()/128 )", -0.0980171403295605); 0432 CHECK_EVAL("SIN( 127*2*PI()/128 )", -0.0490676743274181); 0433 } 0434 0435 // hyperbolic sine 0436 void TestTrigFunctions::testSINH() 0437 { 0438 CHECK_EVAL("SINH( 0*PI()/64 )", 0.00000000000000); 0439 CHECK_EVAL("SINH( 1*PI()/64 )", 0.0491071008473137); 0440 CHECK_EVAL("SINH( 2*PI()/64 )", 0.0983325525214279); 0441 CHECK_EVAL("SINH( 3*PI()/64 )", 0.147794991081176); 0442 CHECK_EVAL("SINH( 4*PI()/64 )", 0.197613623736882); 0443 CHECK_EVAL("SINH( 5*PI()/64 )", 0.247908516146325); 0444 CHECK_EVAL("SINH( 6*PI()/64 )", 0.298800881779610); 0445 CHECK_EVAL("SINH( 7*PI()/64 )", 0.350413374050329); 0446 CHECK_EVAL("SINH( 8*PI()/64 )", 0.402870381917066); 0447 CHECK_EVAL("SINH( 9*PI()/64 )", 0.456298329667662); 0448 CHECK_EVAL("SINH( 10*PI()/64 )", 0.510825981608731); 0449 CHECK_EVAL("SINH( 11*PI()/64 )", 0.566584752394762); 0450 CHECK_EVAL("SINH( 12*PI()/64 )", 0.623709023744691); 0451 CHECK_EVAL("SINH( 13*PI()/64 )", 0.682336468309276); 0452 CHECK_EVAL("SINH( 14*PI()/64 )", 0.742608381469790); 0453 CHECK_EVAL("SINH( 15*PI()/64 )", 0.804670021867697); 0454 CHECK_EVAL("SINH( 16*PI()/64 )", 0.868670961486010); 0455 CHECK_EVAL("SINH( 17*PI()/64 )", 0.934765446126030); 0456 CHECK_EVAL("SINH( 18*PI()/64 )", 1.00311276714826); 0457 CHECK_EVAL("SINH( 19*PI()/64 )", 1.07387764537337); 0458 CHECK_EVAL("SINH( 20*PI()/64 )", 1.14723062806849); 0459 CHECK_EVAL("SINH( 21*PI()/64 )", 1.22334849997556); 0460 CHECK_EVAL("SINH( 22*PI()/64 )", 1.30241470937230); 0461 CHECK_EVAL("SINH( 23*PI()/64 )", 1.38461981019272); 0462 CHECK_EVAL("SINH( 24*PI()/64 )", 1.47016192127261); 0463 CHECK_EVAL("SINH( 25*PI()/64 )", 1.55924720382691); 0464 CHECK_EVAL("SINH( 26*PI()/64 )", 1.65209035830962); 0465 CHECK_EVAL("SINH( 27*PI()/64 )", 1.74891514185372); 0466 CHECK_EVAL("SINH( 28*PI()/64 )", 1.84995490753831); 0467 CHECK_EVAL("SINH( 29*PI()/64 )", 1.95545316678234); 0468 CHECK_EVAL("SINH( 30*PI()/64 )", 2.06566417622064); 0469 CHECK_EVAL("SINH( 31*PI()/64 )", 2.18085355047644); 0470 CHECK_EVAL("SINH( 32*PI()/64 )", 2.30129890230729); 0471 CHECK_EVAL("SINH( 33*PI()/64 )", 2.42729051166718); 0472 CHECK_EVAL("SINH( 34*PI()/64 )", 2.55913202529720); 0473 CHECK_EVAL("SINH( 35*PI()/64 )", 2.69714118853103); 0474 CHECK_EVAL("SINH( 36*PI()/64 )", 2.84165061107874); 0475 CHECK_EVAL("SINH( 37*PI()/64 )", 2.99300856863454); 0476 CHECK_EVAL("SINH( 38*PI()/64 )", 3.15157984224051); 0477 CHECK_EVAL("SINH( 39*PI()/64 )", 3.31774659742900); 0478 CHECK_EVAL("SINH( 40*PI()/64 )", 3.49190930526272); 0479 CHECK_EVAL("SINH( 41*PI()/64 )", 3.67448770749215); 0480 CHECK_EVAL("SINH( 42*PI()/64 )", 3.86592182815631); 0481 CHECK_EVAL("SINH( 43*PI()/64 )", 4.06667303406504); 0482 CHECK_EVAL("SINH( 44*PI()/64 )", 4.27722514671850); 0483 CHECK_EVAL("SINH( 45*PI()/64 )", 4.49808560834373); 0484 CHECK_EVAL("SINH( 46*PI()/64 )", 4.72978670485843); 0485 CHECK_EVAL("SINH( 47*PI()/64 )", 4.97288684870950); 0486 CHECK_EVAL("SINH( 48*PI()/64 )", 5.22797192467780); 0487 CHECK_EVAL("SINH( 49*PI()/64 )", 5.49565670189296); 0488 CHECK_EVAL("SINH( 50*PI()/64 )", 5.77658631546086); 0489 CHECK_EVAL("SINH( 51*PI()/64 )", 6.07143782127495); 0490 CHECK_EVAL("SINH( 52*PI()/64 )", 6.38092182775833); 0491 CHECK_EVAL("SINH( 53*PI()/64 )", 6.70578420846934); 0492 CHECK_EVAL("SINH( 54*PI()/64 )", 7.04680789969806); 0493 CHECK_EVAL("SINH( 55*PI()/64 )", 7.40481478738601); 0494 CHECK_EVAL("SINH( 56*PI()/64 )", 7.78066768791671); 0495 CHECK_EVAL("SINH( 57*PI()/64 )", 8.17527242755082); 0496 CHECK_EVAL("SINH( 58*PI()/64 )", 8.58958002551754); 0497 CHECK_EVAL("SINH( 59*PI()/64 )", 9.02458898602345); 0498 CHECK_EVAL("SINH( 60*PI()/64 )", 9.48134770470283); 0499 CHECK_EVAL("SINH( 61*PI()/64 )", 9.96095699530914); 0500 CHECK_EVAL("SINH( 62*PI()/64 )", 10.4645727427369); 0501 CHECK_EVAL("SINH( 63*PI()/64 )", 10.9934086887683); 0502 } 0503 0504 void TestTrigFunctions::testTAN() 0505 { 0506 // some trivial cases 0507 CHECK_EVAL("TAN(0)", 0); 0508 CHECK_EVAL("TAN(PI()/4)", 1); 0509 CHECK_EVAL("TAN(PI())", 0); 0510 CHECK_EVAL("TAN(-PI()/4)", -1); 0511 0512 // 128 points in a circle, except where the result is infinity 0513 CHECK_EVAL("TAN( 0*2*PI()/128 )", 0.000000000000000); 0514 CHECK_EVAL("TAN( 1*2*PI()/128 )", 0.0491268497694673); 0515 CHECK_EVAL("TAN( 2*2*PI()/128 )", 0.0984914033571642); 0516 CHECK_EVAL("TAN( 3*2*PI()/128 )", 0.148335987538347); 0517 CHECK_EVAL("TAN( 4*2*PI()/128 )", 0.198912367379658); 0518 CHECK_EVAL("TAN( 5*2*PI()/128 )", 0.250486960191305); 0519 CHECK_EVAL("TAN( 6*2*PI()/128 )", 0.303346683607342); 0520 CHECK_EVAL("TAN( 7*2*PI()/128 )", 0.357805721314524); 0521 CHECK_EVAL("TAN( 8*2*PI()/128 )", 0.414213562373095); 0522 CHECK_EVAL("TAN( 9*2*PI()/128 )", 0.472964775891320); 0523 CHECK_EVAL("TAN( 10*2*PI()/128 )", 0.534511135950792); 0524 CHECK_EVAL("TAN( 11*2*PI()/128 )", 0.599376933681924); 0525 CHECK_EVAL("TAN( 12*2*PI()/128 )", 0.668178637919299); 0526 CHECK_EVAL("TAN( 13*2*PI()/128 )", 0.741650546272035); 0527 CHECK_EVAL("TAN( 14*2*PI()/128 )", 0.820678790828660); 0528 CHECK_EVAL("TAN( 15*2*PI()/128 )", 0.906347169019147); 0529 CHECK_EVAL("TAN( 16*2*PI()/128 )", 1.000000000000000); 0530 CHECK_EVAL("TAN( 17*2*PI()/128 )", 1.103329975733476); 0531 CHECK_EVAL("TAN( 18*2*PI()/128 )", 1.218503525587976); 0532 CHECK_EVAL("TAN( 19*2*PI()/128 )", 1.348343913486720); 0533 CHECK_EVAL("TAN( 20*2*PI()/128 )", 1.496605762665489); 0534 CHECK_EVAL("TAN( 21*2*PI()/128 )", 1.668399205583507); 0535 CHECK_EVAL("TAN( 22*2*PI()/128 )", 1.870868411789389); 0536 CHECK_EVAL("TAN( 23*2*PI()/128 )", 2.114322357548640); 0537 CHECK_EVAL("TAN( 24*2*PI()/128 )", 2.414213562373095); 0538 CHECK_EVAL("TAN( 25*2*PI()/128 )", 2.794812772490477); 0539 CHECK_EVAL("TAN( 26*2*PI()/128 )", 3.296558208938321); 0540 CHECK_EVAL("TAN( 27*2*PI()/128 )", 3.992223783770083); 0541 CHECK_EVAL("TAN( 28*2*PI()/128 )", 5.027339492125846); 0542 CHECK_EVAL("TAN( 29*2*PI()/128 )", 6.741452405414988); 0543 CHECK_EVAL("TAN( 30*2*PI()/128 )", 10.153170387608842); 0544 CHECK_EVAL("TAN( 31*2*PI()/128 )", 20.355467624987138); 0545 CHECK_EVAL("TAN( 33*2*PI()/128 )", -20.355467624987192); 0546 CHECK_EVAL("TAN( 34*2*PI()/128 )", -10.153170387608855); 0547 CHECK_EVAL("TAN( 35*2*PI()/128 )", -6.741452405414994); 0548 CHECK_EVAL("TAN( 36*2*PI()/128 )", -5.027339492125850); 0549 CHECK_EVAL("TAN( 37*2*PI()/128 )", -3.992223783770084); 0550 CHECK_EVAL("TAN( 38*2*PI()/128 )", -3.296558208938323); 0551 CHECK_EVAL("TAN( 39*2*PI()/128 )", -2.794812772490478); 0552 CHECK_EVAL("TAN( 40*2*PI()/128 )", -2.4142135623731); 0553 CHECK_EVAL("TAN( 41*2*PI()/128 )", -2.114322357548642); 0554 CHECK_EVAL("TAN( 42*2*PI()/128 )", -1.870868411789389); 0555 CHECK_EVAL("TAN( 43*2*PI()/128 )", -1.668399205583508); 0556 CHECK_EVAL("TAN( 44*2*PI()/128 )", -1.496605762665490); 0557 CHECK_EVAL("TAN( 45*2*PI()/128 )", -1.348343913486720); 0558 CHECK_EVAL("TAN( 46*2*PI()/128 )", -1.218503525587977); 0559 CHECK_EVAL("TAN( 47*2*PI()/128 )", -1.103329975733476); 0560 CHECK_EVAL("TAN( 48*2*PI()/128 )", -1.000000000000000); 0561 CHECK_EVAL("TAN( 49*2*PI()/128 )", -0.906347169019148); 0562 CHECK_EVAL("TAN( 50*2*PI()/128 )", -0.820678790828660); 0563 CHECK_EVAL("TAN( 51*2*PI()/128 )", -0.741650546272036); 0564 CHECK_EVAL("TAN( 52*2*PI()/128 )", -0.668178637919299); 0565 CHECK_EVAL("TAN( 53*2*PI()/128 )", -0.599376933681924); 0566 CHECK_EVAL("TAN( 54*2*PI()/128 )", -0.534511135950792); 0567 CHECK_EVAL("TAN( 55*2*PI()/128 )", -0.472964775891320); 0568 CHECK_EVAL("TAN( 56*2*PI()/128 )", -0.414213562373095); 0569 CHECK_EVAL("TAN( 57*2*PI()/128 )", -0.357805721314524); 0570 CHECK_EVAL("TAN( 58*2*PI()/128 )", -0.303346683607342); 0571 CHECK_EVAL("TAN( 59*2*PI()/128 )", -0.250486960191306); 0572 CHECK_EVAL("TAN( 60*2*PI()/128 )", -0.198912367379658); 0573 CHECK_EVAL("TAN( 61*2*PI()/128 )", -0.148335987538347); 0574 CHECK_EVAL("TAN( 62*2*PI()/128 )", -0.0984914033571645); 0575 CHECK_EVAL("TAN( 63*2*PI()/128 )", -0.0491268497694672); 0576 CHECK_EVAL("TAN( 64*2*PI()/128 )", -0.000000000000000); 0577 CHECK_EVAL("TAN( 65*2*PI()/128 )", 0.049126849769467); 0578 CHECK_EVAL("TAN( 66*2*PI()/128 )", 0.0984914033571642); 0579 CHECK_EVAL("TAN( 67*2*PI()/128 )", 0.148335987538347); 0580 CHECK_EVAL("TAN( 68*2*PI()/128 )", 0.198912367379658); 0581 CHECK_EVAL("TAN( 69*2*PI()/128 )", 0.250486960191305); 0582 CHECK_EVAL("TAN( 70*2*PI()/128 )", 0.303346683607342); 0583 CHECK_EVAL("TAN( 71*2*PI()/128 )", 0.357805721314524); 0584 CHECK_EVAL("TAN( 72*2*PI()/128 )", 0.414213562373095); 0585 CHECK_EVAL("TAN( 73*2*PI()/128 )", 0.472964775891320); 0586 CHECK_EVAL("TAN( 74*2*PI()/128 )", 0.534511135950792); 0587 CHECK_EVAL("TAN( 75*2*PI()/128 )", 0.599376933681923); 0588 CHECK_EVAL("TAN( 76*2*PI()/128 )", 0.668178637919298); 0589 CHECK_EVAL("TAN( 77*2*PI()/128 )", 0.741650546272035); 0590 CHECK_EVAL("TAN( 78*2*PI()/128 )", 0.820678790828660); 0591 CHECK_EVAL("TAN( 79*2*PI()/128 )", 0.906347169019147); 0592 CHECK_EVAL("TAN( 80*2*PI()/128 )", 1.000000000000000); 0593 CHECK_EVAL("TAN( 81*2*PI()/128 )", 1.103329975733475); 0594 CHECK_EVAL("TAN( 82*2*PI()/128 )", 1.218503525587975); 0595 CHECK_EVAL("TAN( 83*2*PI()/128 )", 1.348343913486721); 0596 CHECK_EVAL("TAN( 84*2*PI()/128 )", 1.496605762665489); 0597 CHECK_EVAL("TAN( 85*2*PI()/128 )", 1.668399205583507); 0598 CHECK_EVAL("TAN( 86*2*PI()/128 )", 1.870868411789388); 0599 CHECK_EVAL("TAN( 87*2*PI()/128 )", 2.114322357548638); 0600 CHECK_EVAL("TAN( 88*2*PI()/128 )", 2.414213562373091); 0601 CHECK_EVAL("TAN( 89*2*PI()/128 )", 2.794812772490478); 0602 CHECK_EVAL("TAN( 90*2*PI()/128 )", 3.296558208938320); 0603 CHECK_EVAL("TAN( 91*2*PI()/128 )", 3.992223783770080); 0604 CHECK_EVAL("TAN( 92*2*PI()/128 )", 5.027339492125837); 0605 CHECK_EVAL("TAN( 93*2*PI()/128 )", 6.741452405414962); 0606 CHECK_EVAL("TAN( 94*2*PI()/128 )", 10.1531703876089); 0607 CHECK_EVAL("TAN( 95*2*PI()/128 )", 20.3554676249872); 0608 CHECK_EVAL("TAN( 97*2*PI()/128 )", -20.3554676249873); 0609 CHECK_EVAL("TAN( 98*2*PI()/128 )", -10.1531703876089); 0610 CHECK_EVAL("TAN( 99*2*PI()/128 )", -6.741452405414980); 0611 CHECK_EVAL("TAN( 100*2*PI()/128 )", -5.027339492125847); 0612 CHECK_EVAL("TAN( 101*2*PI()/128 )", -3.992223783770086); 0613 CHECK_EVAL("TAN( 102*2*PI()/128 )", -3.296558208938324); 0614 CHECK_EVAL("TAN( 103*2*PI()/128 )", -2.794812772490481); 0615 CHECK_EVAL("TAN( 104*2*PI()/128 )", -2.414213562373094); 0616 CHECK_EVAL("TAN( 105*2*PI()/128 )", -2.114322357548640); 0617 CHECK_EVAL("TAN( 106*2*PI()/128 )", -1.870868411789390); 0618 CHECK_EVAL("TAN( 107*2*PI()/128 )", -1.668399205583508); 0619 CHECK_EVAL("TAN( 108*2*PI()/128 )", -1.496605762665490); 0620 CHECK_EVAL("TAN( 109*2*PI()/128 )", -1.348343913486722); 0621 CHECK_EVAL("TAN( 110*2*PI()/128 )", -1.218503525587976); 0622 CHECK_EVAL("TAN( 111*2*PI()/128 )", -1.103329975733476); 0623 CHECK_EVAL("TAN( 112*2*PI()/128 )", -1.000000000000000); 0624 CHECK_EVAL("TAN( 113*2*PI()/128 )", -0.906347169019148); 0625 CHECK_EVAL("TAN( 114*2*PI()/128 )", -0.820678790828661); 0626 CHECK_EVAL("TAN( 115*2*PI()/128 )", -0.741650546272035); 0627 CHECK_EVAL("TAN( 116*2*PI()/128 )", -0.668178637919299); 0628 CHECK_EVAL("TAN( 117*2*PI()/128 )", -0.599376933681924); 0629 CHECK_EVAL("TAN( 118*2*PI()/128 )", -0.534511135950792); 0630 CHECK_EVAL("TAN( 119*2*PI()/128 )", -0.472964775891321); 0631 CHECK_EVAL("TAN( 120*2*PI()/128 )", -0.414213562373096); 0632 CHECK_EVAL("TAN( 121*2*PI()/128 )", -0.357805721314524); 0633 CHECK_EVAL("TAN( 122*2*PI()/128 )", -0.303346683607343); 0634 CHECK_EVAL("TAN( 123*2*PI()/128 )", -0.250486960191306); 0635 CHECK_EVAL("TAN( 124*2*PI()/128 )", -0.198912367379658); 0636 CHECK_EVAL("TAN( 125*2*PI()/128 )", -0.148335987538348); 0637 CHECK_EVAL("TAN( 126*2*PI()/128 )", -0.0984914033571642); 0638 CHECK_EVAL("TAN( 127*2*PI()/128 )", -0.0491268497694673); 0639 } 0640 0641 void TestTrigFunctions::testCSC() 0642 { 0643 CHECK_EVAL("CSC(1)", 1.1883951057781212); 0644 } 0645 0646 void TestTrigFunctions::testCSCH() 0647 { 0648 CHECK_EVAL("CSCH(1)", 0.8509181282393215); 0649 } 0650 0651 void TestTrigFunctions::testSEC() 0652 { 0653 CHECK_EVAL("SEC(1)", 1.850815717680925617); 0654 } 0655 0656 void TestTrigFunctions::testSECH() 0657 { 0658 CHECK_EVAL("SECH(1)", 0.6480542736638853996); 0659 } 0660 0661 QTEST_MAIN(TestTrigFunctions)