diff options
Diffstat (limited to 'gsl-1.9/cblas/test_rotmg.c')
-rw-r--r-- | gsl-1.9/cblas/test_rotmg.c | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/gsl-1.9/cblas/test_rotmg.c b/gsl-1.9/cblas/test_rotmg.c new file mode 100644 index 0000000..0a31250 --- /dev/null +++ b/gsl-1.9/cblas/test_rotmg.c @@ -0,0 +1,167 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_rotmg (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + float d1 = -1630.28519312f; + float d2 = 44320.1964703f; + float b1 = 1274.7681352f; + float b2 = 0.983006912864f; + float h[] = { -999.0f, -999.1f, -999.2f, -999.3f, -999.4f }; + float d1_expected = 0.0f; + float d2_expected = 0.0f; + float b1_expected = 0.0f; + float h0_expected = -1.0f; + float h11_expected = 0.0f; + float h21_expected = 0.0f; + float h12_expected = 0.0f; + float h22_expected = 0.0f; + cblas_srotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, flteps, "srotmg(case 606)"); + gsl_test_rel(d2, d2_expected, flteps, "srotmg(case 607)"); + gsl_test_rel(b1, b1_expected, flteps, "srotmg(case 608)"); + gsl_test_rel(h[0], h0_expected, flteps, "srotmg(case 609)"); + gsl_test_rel(h[1], h11_expected, flteps, "srotmg(case 610)"); + gsl_test_rel(h[2], h21_expected, flteps, "srotmg(case 611)"); + gsl_test_rel(h[3], h12_expected, flteps, "srotmg(case 612)"); + gsl_test_rel(h[4], h22_expected, flteps, "srotmg(case 613)"); + }; + + + { + double d1 = 0.0890831089656; + double d2 = 24998.3892082; + double b1 = 34657.8864443; + double b2 = 1.27708980357; + double h[] = { -999.0, -999.1, -999.2, -999.3, -999.4 }; + double d1_expected = 0.0890491788526; + double d2_expected = 24988.8677829; + double b1_expected = 34671.0920237; + double h0_expected = 0; + double h11_expected = -999.1; + double h21_expected = -3.6848461767e-05; + double h12_expected = 10.34036867; + double h22_expected = -999.4; + cblas_drotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, dbleps, "drotmg(case 614)"); + gsl_test_rel(d2, d2_expected, dbleps, "drotmg(case 615)"); + gsl_test_rel(b1, b1_expected, dbleps, "drotmg(case 616)"); + gsl_test_rel(h[0], h0_expected, dbleps, "drotmg(case 617)"); + gsl_test_rel(h[1], h11_expected, dbleps, "drotmg(case 618)"); + gsl_test_rel(h[2], h21_expected, dbleps, "drotmg(case 619)"); + gsl_test_rel(h[3], h12_expected, dbleps, "drotmg(case 620)"); + gsl_test_rel(h[4], h22_expected, dbleps, "drotmg(case 621)"); + }; + + + { + float d1 = 0.00100326116366f; + float d2 = -1.20359225232f; + float b1 = -7.45489498808f; + float b2 = 0.159616854019f; + float h[] = { -999.0f, -999.1f, -999.2f, -999.3f, -999.4f }; + float d1_expected = 0.00222932574734f; + float d2_expected = -2.67447728926f; + float b1_expected = -3.35491869218f; + float h0_expected = 0.0f; + float h11_expected = -999.1f; + float h21_expected = 0.0214110130692f; + float h12_expected = 25.6863620142f; + float h22_expected = -999.4f; + cblas_srotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, flteps, "srotmg(case 622)"); + gsl_test_rel(d2, d2_expected, flteps, "srotmg(case 623)"); + gsl_test_rel(b1, b1_expected, flteps, "srotmg(case 624)"); + gsl_test_rel(h[0], h0_expected, flteps, "srotmg(case 625)"); + gsl_test_rel(h[1], h11_expected, flteps, "srotmg(case 626)"); + gsl_test_rel(h[2], h21_expected, flteps, "srotmg(case 627)"); + gsl_test_rel(h[3], h12_expected, flteps, "srotmg(case 628)"); + gsl_test_rel(h[4], h22_expected, flteps, "srotmg(case 629)"); + }; + + + { + double d1 = -49.1978123005; + double d2 = 0.228703451277; + double b1 = 1.8901039144; + double b2 = 7081.47754386; + double h[] = { -999.0, -999.1, -999.2, -999.3, -999.4 }; + double d1_expected = 0; + double d2_expected = 0; + double b1_expected = 0; + double h0_expected = -1; + double h11_expected = 0; + double h21_expected = 0; + double h12_expected = 0; + double h22_expected = 0; + cblas_drotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, dbleps, "drotmg(case 630)"); + gsl_test_rel(d2, d2_expected, dbleps, "drotmg(case 631)"); + gsl_test_rel(b1, b1_expected, dbleps, "drotmg(case 632)"); + gsl_test_rel(h[0], h0_expected, dbleps, "drotmg(case 633)"); + gsl_test_rel(h[1], h11_expected, dbleps, "drotmg(case 634)"); + gsl_test_rel(h[2], h21_expected, dbleps, "drotmg(case 635)"); + gsl_test_rel(h[3], h12_expected, dbleps, "drotmg(case 636)"); + gsl_test_rel(h[4], h22_expected, dbleps, "drotmg(case 637)"); + }; + + + { + float d1 = 0.00760694276009f; + float d2 = -1.07649167228f; + float b1 = -22584.0076391f; + float b2 = -0.00305597817159f; + float h[] = { -999.0f, -999.1f, -999.2f, -999.3f, -999.4f }; + float d1_expected = 0.00760694276011f; + float d2_expected = -1.07649167228f; + float b1_expected = -22584.007639f; + float h0_expected = 0.0f; + float h11_expected = -999.1f; + float h21_expected = -1.35316026298e-07f; + float h12_expected = -1.91491615001e-05f; + float h22_expected = -999.4f; + cblas_srotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, flteps, "srotmg(case 638)"); + gsl_test_rel(d2, d2_expected, flteps, "srotmg(case 639)"); + gsl_test_rel(b1, b1_expected, flteps, "srotmg(case 640)"); + gsl_test_rel(h[0], h0_expected, flteps, "srotmg(case 641)"); + gsl_test_rel(h[1], h11_expected, flteps, "srotmg(case 642)"); + gsl_test_rel(h[2], h21_expected, flteps, "srotmg(case 643)"); + gsl_test_rel(h[3], h12_expected, flteps, "srotmg(case 644)"); + gsl_test_rel(h[4], h22_expected, flteps, "srotmg(case 645)"); + }; + + + { + double d1 = 0.000283076346391; + double d2 = 20.1907649901; + double b1 = -0.274927034914; + double b2 = 18.6645358259; + double h[] = { -999.0, -999.1, -999.2, -999.3, -999.4 }; + double d1_expected = 20.1907649287; + double d2_expected = 0.00028307634553; + double b1_expected = 18.6645358827; + double h0_expected = 1; + double h11_expected = -2.06514743478e-07; + double h21_expected = -999.2; + double h12_expected = -999.3; + double h22_expected = -0.0147299154652; + cblas_drotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, dbleps, "drotmg(case 646)"); + gsl_test_rel(d2, d2_expected, dbleps, "drotmg(case 647)"); + gsl_test_rel(b1, b1_expected, dbleps, "drotmg(case 648)"); + gsl_test_rel(h[0], h0_expected, dbleps, "drotmg(case 649)"); + gsl_test_rel(h[1], h11_expected, dbleps, "drotmg(case 650)"); + gsl_test_rel(h[2], h21_expected, dbleps, "drotmg(case 651)"); + gsl_test_rel(h[3], h12_expected, dbleps, "drotmg(case 652)"); + gsl_test_rel(h[4], h22_expected, dbleps, "drotmg(case 653)"); + }; + + +} |