summaryrefslogtreecommitdiff
path: root/gsl-1.9/cblas/test_rotmg.c
blob: 0a312508d5f150a78dd2f3f7852338af89c3dd40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
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)");
  };


}