- Timestamp:
- Mar 17, 2008, 1:40:12 PM (15 years ago)
- Location:
- trunk/test
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/test/Suite.cc
r1239 r1244 75 75 76 76 77 bool Suite::equal(double a, double b, u _int n)77 bool Suite::equal(double a, double b, unsigned long int n) 78 78 { 79 79 double last_error_bound = n*std::numeric_limits<double>().epsilon()* -
trunk/test/Suite.h
r1239 r1244 57 57 where \f$ \epsilon \f$ is std::numeric_limits<double>().epsilon() 58 58 */ 59 bool equal(double a, double b, unsigned int N=1);59 bool equal(double a, double b, unsigned long int N=1); 60 60 61 61 template<typename Iterator1, typename Iterator2> -
trunk/test/regression_test.cc
r1234 r1244 3 3 /* 4 4 Copyright (C) 2005, 2006, 2007 Jari Häkkinen, Peter Johansson 5 Copyright (C) 2008 Peter Johansson 5 6 6 7 This file is part of the yat library, http://trac.thep.lu.se/yat … … 81 82 regression::Polynomial polynomial(1); 82 83 polynomial.fit(x,y); 83 if ( suite.equal(linear.beta(),polynomial.fit_parameters()(1)) ){84 if ( !suite.equal(linear.beta(),polynomial.fit_parameters()(1), 1000) ){ 84 85 suite.err() << "error: beta and fit_parameters(1) not equal" << std::endl; 85 86 suite.err() << " beta = " << linear.beta() << std::endl; … … 88 89 suite.add(false); 89 90 } 90 if ( suite.equal(polynomial.fit_parameters()(0),91 linear.alpha()-linear.beta()*1985)){91 if (!suite.equal(polynomial.fit_parameters()(0), 92 linear.alpha()-linear.beta()*1985, 1000)){ 92 93 suite.err() << "error: fit_parameters(0) = " 93 94 << polynomial.fit_parameters()(0)<< std::endl; … … 96 97 suite.add(false); 97 98 } 98 if ( std::abs(polynomial.chisq()-linear.chisq())>0.0001){99 if ( !suite.equal(polynomial.chisq(), linear.chisq(), 100) ){ 99 100 suite.err() << "error: chisq not same in linear and polynomial(1)" 100 101 << std::endl; 101 102 suite.add(false); 102 103 } 103 if ( std::abs(polynomial.predict(1.0)-linear.predict(1.0))>0.0001){104 if ( !suite.equal(polynomial.predict(1.0),linear.predict(1.0), 1000) ){ 104 105 suite.err() << "error: predict not same in linear and polynomial(1)" 105 106 << std::endl; 106 107 suite.add(false); 107 108 } 108 if ( std::abs(polynomial.standard_error2(1985)-linear.standard_error2(1985))109 >0.0001){109 if (!suite.equal(polynomial.standard_error2(1985), 110 linear.standard_error2(1985), 1e5)){ 110 111 suite.err() << "error: standard_error not same in linear and polynomial(1)" 111 112 113 112 << "\n polynomial: " << polynomial.standard_error2(1985) 113 << "\n linear: " << linear.standard_error2(1985) 114 << std::endl; 114 115 suite.add(false); 115 116 } … … 121 122 double y_predicted = linear_w.predict(1990); 122 123 double y_predicted_err = linear_w.prediction_error2(1990); 123 if ( std::abs(y_predicted-12.8)>0.001){124 if (!suite.equal(y_predicted,12.8) ){ 124 125 suite.err() << "error: cannot reproduce fit." << std::endl; 125 126 suite.err() << "predicted value: " << y_predicted << " expected 12.8" … … 134 135 regression::PolynomialWeighted polynomial_w(1); 135 136 polynomial_w.fit(x,y,w); 136 if ( std::abs(linear_w.beta()-polynomial_w.fit_parameters()(1))>10e-7){137 if ( !suite.equal(linear_w.beta(), polynomial_w.fit_parameters()(1),100) ){ 137 138 suite.err() << "error: beta and fit_parameters(1) not equal" << std::endl; 138 139 suite.err() << " beta = " << linear_w.beta() << std::endl; … … 141 142 suite.add(false); 142 143 } 143 if ( std::abs(polynomial_w.fit_parameters()(0)-linear_w.alpha()+144 linear_w.beta()*1990)>0.0001){144 if ( !suite.equal(polynomial_w.fit_parameters()(0), 145 linear_w.alpha()-linear_w.beta()*1990, 100) ){ 145 146 suite.err() << "error: fit_parameters(0) = " 146 147 << polynomial.fit_parameters()(0)<< std::endl; … … 149 150 suite.add(false); 150 151 } 151 if ( std::abs(polynomial_w.s2()-linear_w.s2())>0.0001){152 if ( !suite.equal(polynomial_w.s2(),linear_w.s2(), 10) ){ 152 153 suite.err() << "error: chisq not same in linear and polynomial(1)" 153 154 << std::endl; 154 155 suite.add(false); 155 156 } 156 if ( std::abs(polynomial_w.predict(1.0)-linear_w.predict(1.0))>0.0001){157 if ( !suite.equal(polynomial_w.predict(1.0), linear_w.predict(1.0), 100) ){ 157 158 suite.err() << "error: predict not same in linear and polynomial(1)" 158 159 << std::endl; 159 160 suite.add(false); 160 161 } 161 if ( std::abs(polynomial_w.standard_error2(1985)-linear_w.standard_error2(1985))162 >0.0001){162 if ( !suite.equal(polynomial_w.standard_error2(1985), 163 linear_w.standard_error2(1985), 1e5) ){ 163 164 suite.err() << "error: standard_error not same in linear and polynomial(1)" 164 << "\n polynomial: " << polynomial .standard_error2(1985)165 << "\n linear: " << linear .standard_error2(1985)165 << "\n polynomial: " << polynomial_w.standard_error2(1985) 166 << "\n linear: " << linear_w.standard_error2(1985) 166 167 << std::endl; 167 168 suite.add(false); … … 214 215 utility::Vector fit=polynomialfit.fit_parameters(); 215 216 if (std::abs(fit(0)-1.012229646706 + fit(1)-0.012561322528 + 216 fit(2)+1.159674470130)>1e-11) {217 fit(2)+1.159674470130)>1e-11) { 217 218 suite.err() << "regression_Polynomial: cannot reproduce fit." << std::endl; 218 219 suite.add(false); … … 253 254 r.fit(x,y); 254 255 rw.fit(x,y,w); 255 if ( std::abs(r.predict(2000) - rw.predict(2000))>1e-15) {256 if (!suite.equal(r.predict(2000), rw.predict(2000)) ) { 256 257 suite.add(false); 257 258 suite.err() << "Error: predict not equal\n" … … 260 261 << std::endl; 261 262 } 262 if ( std::abs(r.s2()-rw.s2(1.0))>10E-7){263 if (!suite.equal(r.s2(), rw.s2(1.0)) ){ 263 264 suite.add(false); 264 265 suite.err() << "Error: s2 not equal non-weighted version." << std::endl; … … 266 267 suite.err() << "non-weighted s2 = " << r.s2() << std::endl; 267 268 } 268 if ( std::abs(r.standard_error2(2000)-rw.standard_error2(2000))>10e-7){269 if (!suite.equal(r.standard_error2(2000), rw.standard_error2(2000), 10) ){ 269 270 suite.add(false); 270 271 suite.err() << "Error: standard_error not equal non-weighted version." 271 272 << std::endl; 272 273 } 273 if ( std::abs(r.r2()-rw.r2())>10E-7){274 if (!suite.equal(r.r2(), rw.r2()) ){ 274 275 suite.add(false); 275 276 suite.err() << "Error: r2 not equal non-weighted version." << std::endl; … … 277 278 suite.err() << "non-weighted r2 = " << r.r2() << std::endl; 278 279 } 279 if (std::abs(r.prediction_error2(2000)-rw.prediction_error2(2000,1))>10e-7){ 280 if (!suite.equal(r.prediction_error2(2000), rw.prediction_error2(2000,1), 281 100) ){ 280 282 suite.add(false); 281 283 suite.err() << "Error: prediction_error2 not equal non-weighted version.\n" … … 302 304 w*=2; 303 305 wr.fit(x,y,w); 304 if ( std::abs(wr.predict(2000)-predict)>10e-11){306 if (!suite.equal(wr.predict(2000), predict, 1e4) ){ 305 307 suite.add(false); 306 308 suite.err() << "Error: predict not equal after rescaling.\n"; … … 309 311 suite.err() << " predict = " << wr.predict(2000) << "\n"; 310 312 } 311 if ( std::abs(wr.s2(2)-s2)>10e-11){313 if (!suite.equal(wr.s2(2), s2, 1000) ){ 312 314 suite.add(false); 313 315 suite.err() << "Error: s2 not equal after rescaling.\n"; … … 316 318 suite.err() << "difference " << s2-wr.s2(2.0) << std::endl; 317 319 } 318 if ( std::abs(wr.standard_error2(2000)-standard_error2)>10e-6){320 if (!suite.equal(wr.standard_error2(2000), standard_error2, 1e9) ){ 319 321 suite.add(false); 320 322 suite.err() << "Error: standard_error2 not equal after rescaling.\n"; … … 326 328 << std::endl; 327 329 } 328 if ( std::abs(wr.r2()-r2)>10e-6){330 if (!suite.equal(wr.r2(), r2, 1000) ){ 329 331 suite.add(false); 330 332 suite.err() << "Error: r2 not equal after rescaling.\n"; 331 333 } 332 if ( std::abs(wr.prediction_error2(2000,2)-prediction_error2)>10e-6){334 if (!suite.equal(wr.prediction_error2(2000,2), prediction_error2, 1e8) ){ 333 335 suite.add(false); 334 336 suite.err() << "Error: prediction_error2 not equal after rescaling.\n"; … … 364 366 365 367 wr.fit(x2,y2,w2); 366 if ( std::abs(wr.predict(2000) - predict)>1e-10) {368 if (!suite.equal(wr.predict(2000), predict) ) { 367 369 suite.add(false); 368 370 suite.err() << "Error: predict not equal.\n"; … … 372 374 373 375 } 374 if ( std::abs(wr.prediction_error2(2000) - prediction_error2)>1e-13) {376 if (!suite.equal(wr.prediction_error2(2000), prediction_error2) ) { 375 377 suite.add(false); 376 378 suite.err() << "Error: prediction_error2 not equal.\n"; 377 379 } 378 if ( std::abs(wr.r2() - r2)>1e-15) {380 if (!suite.equal(wr.r2(), r2) ) { 379 381 suite.add(false); 380 382 suite.err() << "Error: r2 not equal.\n"; … … 382 384 suite.err() << " r2: " << wr.r2() << "\n"; 383 385 } 384 if ( std::abs(wr.s2() - s2)>1e-15) {386 if (!suite.equal(wr.s2(), s2) ) { 385 387 suite.add(false); 386 388 suite.err() << "Error: s2 not equal.\n"; 387 389 } 388 if ( std::abs(wr.standard_error2(2000) - standard_error2)>1e-15) {390 if (!suite.equal(wr.standard_error2(2000), standard_error2) ) { 389 391 suite.add(false); 390 392 suite.err() << "Error: standard_error2 not equal.\n"; … … 421 423 } 422 424 423 if ( std::abs(md.standard_error2(z)-mdw.standard_error2(z))>10e-6){425 if (!suite.equal(md.standard_error2(z), mdw.standard_error2(z)) ){ 424 426 suite.add(false); 425 427 suite.err() << "Error: standard_error2 not equal\n" … … 428 430 << std::endl; 429 431 } 430 if ( std::abs(md.prediction_error2(z)-mdw.prediction_error2(z,1.0))>10e-7){432 if (!suite.equal(md.prediction_error2(z), mdw.prediction_error2(z,1.0)) ){ 431 433 suite.add(false); 432 434 suite.err() << "Error: prediction_error2 not equal\n" … … 445 447 w*=2; 446 448 mdw.fit(data,y,w); 447 if ( std::abs(mdw.predict(z)-predict)>10e-10){449 if (!suite.equal(mdw.predict(z), predict, 1e4) ){ 448 450 suite.add(false); 449 451 suite.err() << "Error: predict not equal after rescaling.\n"; … … 451 453 suite.err() << " predict = " << mdw.predict(z) << "\n"; 452 454 } 453 if ( std::abs(mdw.prediction_error2(z,2)-prediction_error2)>10e-7){455 if (!suite.equal(mdw.prediction_error2(z,2), prediction_error2, 1e8) ){ 454 456 suite.add(false); 455 457 suite.err() << "Error: prediction_error2 not equal after rescaling.\n"; 456 458 suite.err() << " predict_error2 = " << prediction_error2 457 459 << " and after doubling weights.\n"; 458 suite.err() << " predict_error2 = " << mdw.prediction_error2(z,2) << "\n"; 459 } 460 if (std::abs(mdw.s2(2)-s2)>10e-10){ 460 suite.err() << " predict_error2 = " 461 << mdw.prediction_error2(z,2) << "\n"; 462 } 463 if (!suite.equal(mdw.s2(2), s2, 1000) ){ 461 464 suite.add(false); 462 465 suite.err() << "Error: s2 not equal after rescaling.\n"; … … 464 467 suite.err() << " s2 = " << mdw.s2(2) << "\n"; 465 468 } 466 if ( std::abs(mdw.standard_error2(z)-standard_error2)>10e-7){469 if (!suite.equal(mdw.standard_error2(z), standard_error2, 1e9) ){ 467 470 suite.add(false); 468 471 suite.err() << "Error: standard_error2 not equal after rescaling.\n";
Note: See TracChangeset
for help on using the changeset viewer.