OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [math/] [cmplx/] [cmath_test.go] - Blame information for rev 814

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 747 jeremybenn
// Copyright 2010 The Go Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4
 
5
package cmplx
6
 
7
import (
8
        "math"
9
        "testing"
10
)
11
 
12
var vc26 = []complex128{
13
        (4.97901192488367350108546816 + 7.73887247457810456552351752i),
14
        (7.73887247457810456552351752 - 0.27688005719200159404635997i),
15
        (-0.27688005719200159404635997 - 5.01060361827107492160848778i),
16
        (-5.01060361827107492160848778 + 9.63629370719841737980004837i),
17
        (9.63629370719841737980004837 + 2.92637723924396464525443662i),
18
        (2.92637723924396464525443662 + 5.22908343145930665230025625i),
19
        (5.22908343145930665230025625 + 2.72793991043601025126008608i),
20
        (2.72793991043601025126008608 + 1.82530809168085506044576505i),
21
        (1.82530809168085506044576505 - 8.68592476857560136238589621i),
22
        (-8.68592476857560136238589621 + 4.97901192488367350108546816i),
23
}
24
var vc = []complex128{
25
        (4.9790119248836735e+00 + 7.7388724745781045e+00i),
26
        (7.7388724745781045e+00 - 2.7688005719200159e-01i),
27
        (-2.7688005719200159e-01 - 5.0106036182710749e+00i),
28
        (-5.0106036182710749e+00 + 9.6362937071984173e+00i),
29
        (9.6362937071984173e+00 + 2.9263772392439646e+00i),
30
        (2.9263772392439646e+00 + 5.2290834314593066e+00i),
31
        (5.2290834314593066e+00 + 2.7279399104360102e+00i),
32
        (2.7279399104360102e+00 + 1.8253080916808550e+00i),
33
        (1.8253080916808550e+00 - 8.6859247685756013e+00i),
34
        (-8.6859247685756013e+00 + 4.9790119248836735e+00i),
35
}
36
 
37
// The expected results below were computed by the high precision calculators
38
// at http://keisan.casio.com/.  More exact input values (array vc[], above)
39
// were obtained by printing them with "%.26f".  The answers were calculated
40
// to 26 digits (by using the "Digit number" drop-down control of each
41
// calculator).
42
 
43
var abs = []float64{
44
        9.2022120669932650313380972e+00,
45
        7.7438239742296106616261394e+00,
46
        5.0182478202557746902556648e+00,
47
        1.0861137372799545160704002e+01,
48
        1.0070841084922199607011905e+01,
49
        5.9922447613166942183705192e+00,
50
        5.8978784056736762299945176e+00,
51
        3.2822866700678709020367184e+00,
52
        8.8756430028990417290744307e+00,
53
        1.0011785496777731986390856e+01,
54
}
55
 
56
var acos = []complex128{
57
        (1.0017679804707456328694569 - 2.9138232718554953784519807i),
58
        (0.03606427612041407369636057 + 2.7358584434576260925091256i),
59
        (1.6249365462333796703711823 + 2.3159537454335901187730929i),
60
        (2.0485650849650740120660391 - 3.0795576791204117911123886i),
61
        (0.29621132089073067282488147 - 3.0007392508200622519398814i),
62
        (1.0664555914934156601503632 - 2.4872865024796011364747111i),
63
        (0.48681307452231387690013905 - 2.463655912283054555225301i),
64
        (0.6116977071277574248407752 - 1.8734458851737055262693056i),
65
        (1.3649311280370181331184214 + 2.8793528632328795424123832i),
66
        (2.6189310485682988308904501 - 2.9956543302898767795858704i),
67
}
68
var acosh = []complex128{
69
        (2.9138232718554953784519807 + 1.0017679804707456328694569i),
70
        (2.7358584434576260925091256 - 0.03606427612041407369636057i),
71
        (2.3159537454335901187730929 - 1.6249365462333796703711823i),
72
        (3.0795576791204117911123886 + 2.0485650849650740120660391i),
73
        (3.0007392508200622519398814 + 0.29621132089073067282488147i),
74
        (2.4872865024796011364747111 + 1.0664555914934156601503632i),
75
        (2.463655912283054555225301 + 0.48681307452231387690013905i),
76
        (1.8734458851737055262693056 + 0.6116977071277574248407752i),
77
        (2.8793528632328795424123832 - 1.3649311280370181331184214i),
78
        (2.9956543302898767795858704 + 2.6189310485682988308904501i),
79
}
80
var asin = []complex128{
81
        (0.56902834632415098636186476 + 2.9138232718554953784519807i),
82
        (1.5347320506744825455349611 - 2.7358584434576260925091256i),
83
        (-0.054140219438483051139860579 - 2.3159537454335901187730929i),
84
        (-0.47776875817017739283471738 + 3.0795576791204117911123886i),
85
        (1.2745850059041659464064402 + 3.0007392508200622519398814i),
86
        (0.50434073530148095908095852 + 2.4872865024796011364747111i),
87
        (1.0839832522725827423311826 + 2.463655912283054555225301i),
88
        (0.9590986196671391943905465 + 1.8734458851737055262693056i),
89
        (0.20586519875787848611290031 - 2.8793528632328795424123832i),
90
        (-1.0481347217734022116591284 + 2.9956543302898767795858704i),
91
}
92
var asinh = []complex128{
93
        (2.9113760469415295679342185 + 0.99639459545704326759805893i),
94
        (2.7441755423994259061579029 - 0.035468308789000500601119392i),
95
        (-2.2962136462520690506126678 - 1.5144663565690151885726707i),
96
        (-3.0771233459295725965402455 + 1.0895577967194013849422294i),
97
        (3.0048366100923647417557027 + 0.29346979169819220036454168i),
98
        (2.4800059370795363157364643 + 1.0545868606049165710424232i),
99
        (2.4718773838309585611141821 + 0.47502344364250803363708842i),
100
        (1.8910743588080159144378396 + 0.56882925572563602341139174i),
101
        (2.8735426423367341878069406 - 1.362376149648891420997548i),
102
        (-2.9981750586172477217567878 + 0.5183571985225367505624207i),
103
}
104
var atan = []complex128{
105
        (1.5115747079332741358607654 + 0.091324403603954494382276776i),
106
        (1.4424504323482602560806727 - 0.0045416132642803911503770933i),
107
        (-1.5593488703630532674484026 - 0.20163295409248362456446431i),
108
        (-1.5280619472445889867794105 + 0.081721556230672003746956324i),
109
        (1.4759909163240799678221039 + 0.028602969320691644358773586i),
110
        (1.4877353772046548932715555 + 0.14566877153207281663773599i),
111
        (1.4206983927779191889826 + 0.076830486127880702249439993i),
112
        (1.3162236060498933364869556 + 0.16031313000467530644933363i),
113
        (1.5473450684303703578810093 - 0.11064907507939082484935782i),
114
        (-1.4841462340185253987375812 + 0.049341850305024399493142411i),
115
}
116
var atanh = []complex128{
117
        (0.058375027938968509064640438 + 1.4793488495105334458167782i),
118
        (0.12977343497790381229915667 - 1.5661009410463561327262499i),
119
        (-0.010576456067347252072200088 - 1.3743698658402284549750563i),
120
        (-0.042218595678688358882784918 + 1.4891433968166405606692604i),
121
        (0.095218997991316722061828397 + 1.5416884098777110330499698i),
122
        (0.079965459366890323857556487 + 1.4252510353873192700350435i),
123
        (0.15051245471980726221708301 + 1.4907432533016303804884461i),
124
        (0.25082072933993987714470373 + 1.392057665392187516442986i),
125
        (0.022896108815797135846276662 - 1.4609224989282864208963021i),
126
        (-0.08665624101841876130537396 + 1.5207902036935093480142159i),
127
}
128
var conj = []complex128{
129
        (4.9790119248836735e+00 - 7.7388724745781045e+00i),
130
        (7.7388724745781045e+00 + 2.7688005719200159e-01i),
131
        (-2.7688005719200159e-01 + 5.0106036182710749e+00i),
132
        (-5.0106036182710749e+00 - 9.6362937071984173e+00i),
133
        (9.6362937071984173e+00 - 2.9263772392439646e+00i),
134
        (2.9263772392439646e+00 - 5.2290834314593066e+00i),
135
        (5.2290834314593066e+00 - 2.7279399104360102e+00i),
136
        (2.7279399104360102e+00 - 1.8253080916808550e+00i),
137
        (1.8253080916808550e+00 + 8.6859247685756013e+00i),
138
        (-8.6859247685756013e+00 - 4.9790119248836735e+00i),
139
}
140
var cos = []complex128{
141
        (3.024540920601483938336569e+02 + 1.1073797572517071650045357e+03i),
142
        (1.192858682649064973252758e-01 + 2.7857554122333065540970207e-01i),
143
        (7.2144394304528306603857962e+01 - 2.0500129667076044169954205e+01i),
144
        (2.24921952538403984190541e+03 - 7.317363745602773587049329e+03i),
145
        (-9.148222970032421760015498e+00 + 1.953124661113563541862227e+00i),
146
        (-9.116081175857732248227078e+01 - 1.992669213569952232487371e+01i),
147
        (3.795639179042704640002918e+00 + 6.623513350981458399309662e+00i),
148
        (-2.9144840732498869560679084e+00 - 1.214620271628002917638748e+00i),
149
        (-7.45123482501299743872481e+02 + 2.8641692314488080814066734e+03i),
150
        (-5.371977967039319076416747e+01 + 4.893348341339375830564624e+01i),
151
}
152
var cosh = []complex128{
153
        (8.34638383523018249366948e+00 + 7.2181057886425846415112064e+01i),
154
        (1.10421967379919366952251e+03 - 3.1379638689277575379469861e+02i),
155
        (3.051485206773701584738512e-01 - 2.6805384730105297848044485e-01i),
156
        (-7.33294728684187933370938e+01 + 1.574445942284918251038144e+01i),
157
        (-7.478643293945957535757355e+03 + 1.6348382209913353929473321e+03i),
158
        (4.622316522966235701630926e+00 - 8.088695185566375256093098e+00i),
159
        (-8.544333183278877406197712e+01 + 3.7505836120128166455231717e+01i),
160
        (-1.934457815021493925115198e+00 + 7.3725859611767228178358673e+00i),
161
        (-2.352958770061749348353548e+00 - 2.034982010440878358915409e+00i),
162
        (7.79756457532134748165069e+02 + 2.8549350716819176560377717e+03i),
163
}
164
var exp = []complex128{
165
        (1.669197736864670815125146e+01 + 1.4436895109507663689174096e+02i),
166
        (2.2084389286252583447276212e+03 - 6.2759289284909211238261917e+02i),
167
        (2.227538273122775173434327e-01 + 7.2468284028334191250470034e-01i),
168
        (-6.5182985958153548997881627e-03 - 1.39965837915193860879044e-03i),
169
        (-1.4957286524084015746110777e+04 + 3.269676455931135688988042e+03i),
170
        (9.218158701983105935659273e+00 - 1.6223985291084956009304582e+01i),
171
        (-1.7088175716853040841444505e+02 + 7.501382609870410713795546e+01i),
172
        (-3.852461315830959613132505e+00 + 1.4808420423156073221970892e+01i),
173
        (-4.586775503301407379786695e+00 - 4.178501081246873415144744e+00i),
174
        (4.451337963005453491095747e-05 - 1.62977574205442915935263e-04i),
175
}
176
var log = []complex128{
177
        (2.2194438972179194425697051e+00 + 9.9909115046919291062461269e-01i),
178
        (2.0468956191154167256337289e+00 - 3.5762575021856971295156489e-02i),
179
        (1.6130808329853860438751244e+00 - 1.6259990074019058442232221e+00i),
180
        (2.3851910394823008710032651e+00 + 2.0502936359659111755031062e+00i),
181
        (2.3096442270679923004800651e+00 + 2.9483213155446756211881774e-01i),
182
        (1.7904660933974656106951860e+00 + 1.0605860367252556281902109e+00i),
183
        (1.7745926939841751666177512e+00 + 4.8084556083358307819310911e-01i),
184
        (1.1885403350045342425648780e+00 + 5.8969634164776659423195222e-01i),
185
        (2.1833107837679082586772505e+00 - 1.3636647724582455028314573e+00i),
186
        (2.3037629487273259170991671e+00 + 2.6210913895386013290915234e+00i),
187
}
188
var log10 = []complex128{
189
        (9.6389223745559042474184943e-01 + 4.338997735671419492599631e-01i),
190
        (8.8895547241376579493490892e-01 - 1.5531488990643548254864806e-02i),
191
        (7.0055210462945412305244578e-01 - 7.0616239649481243222248404e-01i),
192
        (1.0358753067322445311676952e+00 + 8.9043121238134980156490909e-01i),
193
        (1.003065742975330237172029e+00 + 1.2804396782187887479857811e-01i),
194
        (7.7758954439739162532085157e-01 + 4.6060666333341810869055108e-01i),
195
        (7.7069581462315327037689152e-01 + 2.0882857371769952195512475e-01i),
196
        (5.1617650901191156135137239e-01 + 2.5610186717615977620363299e-01i),
197
        (9.4819982567026639742663212e-01 - 5.9223208584446952284914289e-01i),
198
        (1.0005115362454417135973429e+00 + 1.1383255270407412817250921e+00i),
199
}
200
 
201
type ff struct {
202
        r, theta float64
203
}
204
 
205
var polar = []ff{
206
        {9.2022120669932650313380972e+00, 9.9909115046919291062461269e-01},
207
        {7.7438239742296106616261394e+00, -3.5762575021856971295156489e-02},
208
        {5.0182478202557746902556648e+00, -1.6259990074019058442232221e+00},
209
        {1.0861137372799545160704002e+01, 2.0502936359659111755031062e+00},
210
        {1.0070841084922199607011905e+01, 2.9483213155446756211881774e-01},
211
        {5.9922447613166942183705192e+00, 1.0605860367252556281902109e+00},
212
        {5.8978784056736762299945176e+00, 4.8084556083358307819310911e-01},
213
        {3.2822866700678709020367184e+00, 5.8969634164776659423195222e-01},
214
        {8.8756430028990417290744307e+00, -1.3636647724582455028314573e+00},
215
        {1.0011785496777731986390856e+01, 2.6210913895386013290915234e+00},
216
}
217
var pow = []complex128{
218
        (-2.499956739197529585028819e+00 + 1.759751724335650228957144e+00i),
219
        (7.357094338218116311191939e+04 - 5.089973412479151648145882e+04i),
220
        (1.320777296067768517259592e+01 - 3.165621914333901498921986e+01i),
221
        (-3.123287828297300934072149e-07 - 1.9849567521490553032502223E-7i),
222
        (8.0622651468477229614813e+04 - 7.80028727944573092944363e+04i),
223
        (-1.0268824572103165858577141e+00 - 4.716844738244989776610672e-01i),
224
        (-4.35953819012244175753187e+01 + 2.2036445974645306917648585e+02i),
225
        (8.3556092283250594950239e-01 - 1.2261571947167240272593282e+01i),
226
        (1.582292972120769306069625e+03 + 1.273564263524278244782512e+04i),
227
        (6.592208301642122149025369e-08 + 2.584887236651661903526389e-08i),
228
}
229
var sin = []complex128{
230
        (-1.1073801774240233539648544e+03 + 3.024539773002502192425231e+02i),
231
        (1.0317037521400759359744682e+00 - 3.2208979799929570242818e-02i),
232
        (-2.0501952097271429804261058e+01 - 7.2137981348240798841800967e+01i),
233
        (7.3173638080346338642193078e+03 + 2.249219506193664342566248e+03i),
234
        (-1.964375633631808177565226e+00 - 9.0958264713870404464159683e+00i),
235
        (1.992783647158514838337674e+01 - 9.11555769410191350416942e+01i),
236
        (-6.680335650741921444300349e+00 + 3.763353833142432513086117e+00i),
237
        (1.2794028166657459148245993e+00 - 2.7669092099795781155109602e+00i),
238
        (2.8641693949535259594188879e+03 + 7.451234399649871202841615e+02i),
239
        (-4.893811726244659135553033e+01 - 5.371469305562194635957655e+01i),
240
}
241
var sinh = []complex128{
242
        (8.34559353341652565758198e+00 + 7.2187893208650790476628899e+01i),
243
        (1.1042192548260646752051112e+03 - 3.1379650595631635858792056e+02i),
244
        (-8.239469336509264113041849e-02 + 9.9273668758439489098514519e-01i),
245
        (7.332295456982297798219401e+01 - 1.574585908122833444899023e+01i),
246
        (-7.4786432301380582103534216e+03 + 1.63483823493980029604071e+03i),
247
        (4.595842179016870234028347e+00 - 8.135290105518580753211484e+00i),
248
        (-8.543842533574163435246793e+01 + 3.750798997857594068272375e+01i),
249
        (-1.918003500809465688017307e+00 + 7.4358344619793504041350251e+00i),
250
        (-2.233816733239658031433147e+00 - 2.143519070805995056229335e+00i),
251
        (-7.797564130187551181105341e+02 - 2.8549352346594918614806877e+03i),
252
}
253
var sqrt = []complex128{
254
        (2.6628203086086130543813948e+00 + 1.4531345674282185229796902e+00i),
255
        (2.7823278427251986247149295e+00 - 4.9756907317005224529115567e-02i),
256
        (1.5397025302089642757361015e+00 - 1.6271336573016637535695727e+00i),
257
        (1.7103411581506875260277898e+00 + 2.8170677122737589676157029e+00i),
258
        (3.1390392472953103383607947e+00 + 4.6612625849858653248980849e-01i),
259
        (2.1117080764822417640789287e+00 + 1.2381170223514273234967850e+00i),
260
        (2.3587032281672256703926939e+00 + 5.7827111903257349935720172e-01i),
261
        (1.7335262588873410476661577e+00 + 5.2647258220721269141550382e-01i),
262
        (2.3131094974708716531499282e+00 - 1.8775429304303785570775490e+00i),
263
        (8.1420535745048086240947359e-01 + 3.0575897587277248522656113e+00i),
264
}
265
var tan = []complex128{
266
        (-1.928757919086441129134525e-07 + 1.0000003267499169073251826e+00i),
267
        (1.242412685364183792138948e+00 - 3.17149693883133370106696e+00i),
268
        (-4.6745126251587795225571826e-05 - 9.9992439225263959286114298e-01i),
269
        (4.792363401193648192887116e-09 + 1.0000000070589333451557723e+00i),
270
        (2.345740824080089140287315e-03 + 9.947733046570988661022763e-01i),
271
        (-2.396030789494815566088809e-05 + 9.9994781345418591429826779e-01i),
272
        (-7.370204836644931340905303e-03 + 1.0043553413417138987717748e+00i),
273
        (-3.691803847992048527007457e-02 + 9.6475071993469548066328894e-01i),
274
        (-2.781955256713729368401878e-08 - 1.000000049848910609006646e+00i),
275
        (9.4281590064030478879791249e-05 + 9.9999119340863718183758545e-01i),
276
}
277
var tanh = []complex128{
278
        (1.0000921981225144748819918e+00 + 2.160986245871518020231507e-05i),
279
        (9.9999967727531993209562591e-01 - 1.9953763222959658873657676e-07i),
280
        (-1.765485739548037260789686e+00 + 1.7024216325552852445168471e+00i),
281
        (-9.999189442732736452807108e-01 + 3.64906070494473701938098e-05i),
282
        (9.9999999224622333738729767e-01 - 3.560088949517914774813046e-09i),
283
        (1.0029324933367326862499343e+00 - 4.948790309797102353137528e-03i),
284
        (9.9996113064788012488693567e-01 - 4.226995742097032481451259e-05i),
285
        (1.0074784189316340029873945e+00 - 4.194050814891697808029407e-03i),
286
        (9.9385534229718327109131502e-01 + 5.144217985914355502713437e-02i),
287
        (-1.0000000491604982429364892e+00 - 2.901873195374433112227349e-08i),
288
}
289
 
290
// special cases
291
var vcAbsSC = []complex128{
292
        NaN(),
293
}
294
var absSC = []float64{
295
        math.NaN(),
296
}
297
var vcAcosSC = []complex128{
298
        NaN(),
299
}
300
var acosSC = []complex128{
301
        NaN(),
302
}
303
var vcAcoshSC = []complex128{
304
        NaN(),
305
}
306
var acoshSC = []complex128{
307
        NaN(),
308
}
309
var vcAsinSC = []complex128{
310
        NaN(),
311
}
312
var asinSC = []complex128{
313
        NaN(),
314
}
315
var vcAsinhSC = []complex128{
316
        NaN(),
317
}
318
var asinhSC = []complex128{
319
        NaN(),
320
}
321
var vcAtanSC = []complex128{
322
        NaN(),
323
}
324
var atanSC = []complex128{
325
        NaN(),
326
}
327
var vcAtanhSC = []complex128{
328
        NaN(),
329
}
330
var atanhSC = []complex128{
331
        NaN(),
332
}
333
var vcConjSC = []complex128{
334
        NaN(),
335
}
336
var conjSC = []complex128{
337
        NaN(),
338
}
339
var vcCosSC = []complex128{
340
        NaN(),
341
}
342
var cosSC = []complex128{
343
        NaN(),
344
}
345
var vcCoshSC = []complex128{
346
        NaN(),
347
}
348
var coshSC = []complex128{
349
        NaN(),
350
}
351
var vcExpSC = []complex128{
352
        NaN(),
353
}
354
var expSC = []complex128{
355
        NaN(),
356
}
357
var vcIsNaNSC = []complex128{
358
        complex(math.Inf(-1), math.Inf(-1)),
359
        complex(math.Inf(-1), math.NaN()),
360
        complex(math.NaN(), math.Inf(-1)),
361
        complex(0, math.NaN()),
362
        complex(math.NaN(), 0),
363
        complex(math.Inf(1), math.Inf(1)),
364
        complex(math.Inf(1), math.NaN()),
365
        complex(math.NaN(), math.Inf(1)),
366
        complex(math.NaN(), math.NaN()),
367
}
368
var isNaNSC = []bool{
369
        false,
370
        false,
371
        false,
372
        true,
373
        true,
374
        false,
375
        false,
376
        false,
377
        true,
378
}
379
var vcLogSC = []complex128{
380
        NaN(),
381
}
382
var logSC = []complex128{
383
        NaN(),
384
}
385
var vcLog10SC = []complex128{
386
        NaN(),
387
}
388
var log10SC = []complex128{
389
        NaN(),
390
}
391
var vcPolarSC = []complex128{
392
        NaN(),
393
}
394
var polarSC = []ff{
395
        {math.NaN(), math.NaN()},
396
}
397
var vcPowSC = [][2]complex128{
398
        {NaN(), NaN()},
399
}
400
var powSC = []complex128{
401
        NaN(),
402
}
403
var vcSinSC = []complex128{
404
        NaN(),
405
}
406
var sinSC = []complex128{
407
        NaN(),
408
}
409
var vcSinhSC = []complex128{
410
        NaN(),
411
}
412
var sinhSC = []complex128{
413
        NaN(),
414
}
415
var vcSqrtSC = []complex128{
416
        NaN(),
417
}
418
var sqrtSC = []complex128{
419
        NaN(),
420
}
421
var vcTanSC = []complex128{
422
        NaN(),
423
}
424
var tanSC = []complex128{
425
        NaN(),
426
}
427
var vcTanhSC = []complex128{
428
        NaN(),
429
}
430
var tanhSC = []complex128{
431
        NaN(),
432
}
433
 
434
// functions borrowed from pkg/math/all_test.go
435
func tolerance(a, b, e float64) bool {
436
        d := a - b
437
        if d < 0 {
438
                d = -d
439
        }
440
 
441
        if a != 0 {
442
                e = e * a
443
                if e < 0 {
444
                        e = -e
445
                }
446
        }
447
        return d < e
448
}
449
func soclose(a, b, e float64) bool { return tolerance(a, b, e) }
450
func veryclose(a, b float64) bool  { return tolerance(a, b, 4e-16) }
451
func alike(a, b float64) bool {
452
        switch {
453
        case a != a && b != b: // math.IsNaN(a) && math.IsNaN(b):
454
                return true
455
        case a == b:
456
                return math.Signbit(a) == math.Signbit(b)
457
        }
458
        return false
459
}
460
 
461
func cTolerance(a, b complex128, e float64) bool {
462
        d := Abs(a - b)
463
        if a != 0 {
464
                e = e * Abs(a)
465
                if e < 0 {
466
                        e = -e
467
                }
468
        }
469
        return d < e
470
}
471
func cSoclose(a, b complex128, e float64) bool { return cTolerance(a, b, e) }
472
func cVeryclose(a, b complex128) bool          { return cTolerance(a, b, 4e-16) }
473
func cAlike(a, b complex128) bool {
474
        switch {
475
        case IsNaN(a) && IsNaN(b):
476
                return true
477
        case a == b:
478
                return math.Signbit(real(a)) == math.Signbit(real(b)) && math.Signbit(imag(a)) == math.Signbit(imag(b))
479
        }
480
        return false
481
}
482
 
483
func TestAbs(t *testing.T) {
484
        for i := 0; i < len(vc); i++ {
485
                if f := Abs(vc[i]); !veryclose(abs[i], f) {
486
                        t.Errorf("Abs(%g) = %g, want %g", vc[i], f, abs[i])
487
                }
488
        }
489
        for i := 0; i < len(vcAbsSC); i++ {
490
                if f := Abs(vcAbsSC[i]); !alike(absSC[i], f) {
491
                        t.Errorf("Abs(%g) = %g, want %g", vcAbsSC[i], f, absSC[i])
492
                }
493
        }
494
}
495
func TestAcos(t *testing.T) {
496
        for i := 0; i < len(vc); i++ {
497
                if f := Acos(vc[i]); !cSoclose(acos[i], f, 1e-14) {
498
                        t.Errorf("Acos(%g) = %g, want %g", vc[i], f, acos[i])
499
                }
500
        }
501
        for i := 0; i < len(vcAcosSC); i++ {
502
                if f := Acos(vcAcosSC[i]); !cAlike(acosSC[i], f) {
503
                        t.Errorf("Acos(%g) = %g, want %g", vcAcosSC[i], f, acosSC[i])
504
                }
505
        }
506
}
507
func TestAcosh(t *testing.T) {
508
        for i := 0; i < len(vc); i++ {
509
                if f := Acosh(vc[i]); !cSoclose(acosh[i], f, 1e-14) {
510
                        t.Errorf("Acosh(%g) = %g, want %g", vc[i], f, acosh[i])
511
                }
512
        }
513
        for i := 0; i < len(vcAcoshSC); i++ {
514
                if f := Acosh(vcAcoshSC[i]); !cAlike(acoshSC[i], f) {
515
                        t.Errorf("Acosh(%g) = %g, want %g", vcAcoshSC[i], f, acoshSC[i])
516
                }
517
        }
518
}
519
func TestAsin(t *testing.T) {
520
        for i := 0; i < len(vc); i++ {
521
                if f := Asin(vc[i]); !cSoclose(asin[i], f, 1e-14) {
522
                        t.Errorf("Asin(%g) = %g, want %g", vc[i], f, asin[i])
523
                }
524
        }
525
        for i := 0; i < len(vcAsinSC); i++ {
526
                if f := Asin(vcAsinSC[i]); !cAlike(asinSC[i], f) {
527
                        t.Errorf("Asin(%g) = %g, want %g", vcAsinSC[i], f, asinSC[i])
528
                }
529
        }
530
}
531
func TestAsinh(t *testing.T) {
532
        for i := 0; i < len(vc); i++ {
533
                if f := Asinh(vc[i]); !cSoclose(asinh[i], f, 4e-15) {
534
                        t.Errorf("Asinh(%g) = %g, want %g", vc[i], f, asinh[i])
535
                }
536
        }
537
        for i := 0; i < len(vcAsinhSC); i++ {
538
                if f := Asinh(vcAsinhSC[i]); !cAlike(asinhSC[i], f) {
539
                        t.Errorf("Asinh(%g) = %g, want %g", vcAsinhSC[i], f, asinhSC[i])
540
                }
541
        }
542
}
543
func TestAtan(t *testing.T) {
544
        for i := 0; i < len(vc); i++ {
545
                if f := Atan(vc[i]); !cVeryclose(atan[i], f) {
546
                        t.Errorf("Atan(%g) = %g, want %g", vc[i], f, atan[i])
547
                }
548
        }
549
        for i := 0; i < len(vcAtanSC); i++ {
550
                if f := Atan(vcAtanSC[i]); !cAlike(atanSC[i], f) {
551
                        t.Errorf("Atan(%g) = %g, want %g", vcAtanSC[i], f, atanSC[i])
552
                }
553
        }
554
}
555
func TestAtanh(t *testing.T) {
556
        for i := 0; i < len(vc); i++ {
557
                if f := Atanh(vc[i]); !cVeryclose(atanh[i], f) {
558
                        t.Errorf("Atanh(%g) = %g, want %g", vc[i], f, atanh[i])
559
                }
560
        }
561
        for i := 0; i < len(vcAtanhSC); i++ {
562
                if f := Atanh(vcAtanhSC[i]); !cAlike(atanhSC[i], f) {
563
                        t.Errorf("Atanh(%g) = %g, want %g", vcAtanhSC[i], f, atanhSC[i])
564
                }
565
        }
566
}
567
func TestConj(t *testing.T) {
568
        for i := 0; i < len(vc); i++ {
569
                if f := Conj(vc[i]); !cVeryclose(conj[i], f) {
570
                        t.Errorf("Conj(%g) = %g, want %g", vc[i], f, conj[i])
571
                }
572
        }
573
        for i := 0; i < len(vcConjSC); i++ {
574
                if f := Conj(vcConjSC[i]); !cAlike(conjSC[i], f) {
575
                        t.Errorf("Conj(%g) = %g, want %g", vcConjSC[i], f, conjSC[i])
576
                }
577
        }
578
}
579
func TestCos(t *testing.T) {
580
        for i := 0; i < len(vc); i++ {
581
                if f := Cos(vc[i]); !cSoclose(cos[i], f, 3e-15) {
582
                        t.Errorf("Cos(%g) = %g, want %g", vc[i], f, cos[i])
583
                }
584
        }
585
        for i := 0; i < len(vcCosSC); i++ {
586
                if f := Cos(vcCosSC[i]); !cAlike(cosSC[i], f) {
587
                        t.Errorf("Cos(%g) = %g, want %g", vcCosSC[i], f, cosSC[i])
588
                }
589
        }
590
}
591
func TestCosh(t *testing.T) {
592
        for i := 0; i < len(vc); i++ {
593
                if f := Cosh(vc[i]); !cSoclose(cosh[i], f, 2e-15) {
594
                        t.Errorf("Cosh(%g) = %g, want %g", vc[i], f, cosh[i])
595
                }
596
        }
597
        for i := 0; i < len(vcCoshSC); i++ {
598
                if f := Cosh(vcCoshSC[i]); !cAlike(coshSC[i], f) {
599
                        t.Errorf("Cosh(%g) = %g, want %g", vcCoshSC[i], f, coshSC[i])
600
                }
601
        }
602
}
603
func TestExp(t *testing.T) {
604
        for i := 0; i < len(vc); i++ {
605
                if f := Exp(vc[i]); !cSoclose(exp[i], f, 1e-15) {
606
                        t.Errorf("Exp(%g) = %g, want %g", vc[i], f, exp[i])
607
                }
608
        }
609
        for i := 0; i < len(vcExpSC); i++ {
610
                if f := Exp(vcExpSC[i]); !cAlike(expSC[i], f) {
611
                        t.Errorf("Exp(%g) = %g, want %g", vcExpSC[i], f, expSC[i])
612
                }
613
        }
614
}
615
func TestIsNaN(t *testing.T) {
616
        for i := 0; i < len(vcIsNaNSC); i++ {
617
                if f := IsNaN(vcIsNaNSC[i]); isNaNSC[i] != f {
618
                        t.Errorf("IsNaN(%v) = %v, want %v", vcIsNaNSC[i], f, isNaNSC[i])
619
                }
620
        }
621
}
622
func TestLog(t *testing.T) {
623
        for i := 0; i < len(vc); i++ {
624
                if f := Log(vc[i]); !cVeryclose(log[i], f) {
625
                        t.Errorf("Log(%g) = %g, want %g", vc[i], f, log[i])
626
                }
627
        }
628
        for i := 0; i < len(vcLogSC); i++ {
629
                if f := Log(vcLogSC[i]); !cAlike(logSC[i], f) {
630
                        t.Errorf("Log(%g) = %g, want %g", vcLogSC[i], f, logSC[i])
631
                }
632
        }
633
}
634
func TestLog10(t *testing.T) {
635
        for i := 0; i < len(vc); i++ {
636
                if f := Log10(vc[i]); !cVeryclose(log10[i], f) {
637
                        t.Errorf("Log10(%g) = %g, want %g", vc[i], f, log10[i])
638
                }
639
        }
640
        for i := 0; i < len(vcLog10SC); i++ {
641
                if f := Log10(vcLog10SC[i]); !cAlike(log10SC[i], f) {
642
                        t.Errorf("Log10(%g) = %g, want %g", vcLog10SC[i], f, log10SC[i])
643
                }
644
        }
645
}
646
func TestPolar(t *testing.T) {
647
        for i := 0; i < len(vc); i++ {
648
                if r, theta := Polar(vc[i]); !veryclose(polar[i].r, r) && !veryclose(polar[i].theta, theta) {
649
                        t.Errorf("Polar(%g) = %g, %g want %g, %g", vc[i], r, theta, polar[i].r, polar[i].theta)
650
                }
651
        }
652
        for i := 0; i < len(vcPolarSC); i++ {
653
                if r, theta := Polar(vcPolarSC[i]); !alike(polarSC[i].r, r) && !alike(polarSC[i].theta, theta) {
654
                        t.Errorf("Polar(%g) = %g, %g, want %g, %g", vcPolarSC[i], r, theta, polarSC[i].r, polarSC[i].theta)
655
                }
656
        }
657
}
658
func TestPow(t *testing.T) {
659
        var a = complex(3.0, 3.0)
660
        for i := 0; i < len(vc); i++ {
661
                if f := Pow(a, vc[i]); !cSoclose(pow[i], f, 4e-15) {
662
                        t.Errorf("Pow(%g, %g) = %g, want %g", a, vc[i], f, pow[i])
663
                }
664
        }
665
        for i := 0; i < len(vcPowSC); i++ {
666
                if f := Pow(vcPowSC[i][0], vcPowSC[i][0]); !cAlike(powSC[i], f) {
667
                        t.Errorf("Pow(%g, %g) = %g, want %g", vcPowSC[i][0], vcPowSC[i][0], f, powSC[i])
668
                }
669
        }
670
}
671
func TestRect(t *testing.T) {
672
        for i := 0; i < len(vc); i++ {
673
                if f := Rect(polar[i].r, polar[i].theta); !cVeryclose(vc[i], f) {
674
                        t.Errorf("Rect(%g, %g) = %g want %g", polar[i].r, polar[i].theta, f, vc[i])
675
                }
676
        }
677
        for i := 0; i < len(vcPolarSC); i++ {
678
                if f := Rect(polarSC[i].r, polarSC[i].theta); !cAlike(vcPolarSC[i], f) {
679
                        t.Errorf("Rect(%g, %g) = %g, want %g", polarSC[i].r, polarSC[i].theta, f, vcPolarSC[i])
680
                }
681
        }
682
}
683
func TestSin(t *testing.T) {
684
        for i := 0; i < len(vc); i++ {
685
                if f := Sin(vc[i]); !cSoclose(sin[i], f, 2e-15) {
686
                        t.Errorf("Sin(%g) = %g, want %g", vc[i], f, sin[i])
687
                }
688
        }
689
        for i := 0; i < len(vcSinSC); i++ {
690
                if f := Sin(vcSinSC[i]); !cAlike(sinSC[i], f) {
691
                        t.Errorf("Sin(%g) = %g, want %g", vcSinSC[i], f, sinSC[i])
692
                }
693
        }
694
}
695
func TestSinh(t *testing.T) {
696
        for i := 0; i < len(vc); i++ {
697
                if f := Sinh(vc[i]); !cSoclose(sinh[i], f, 2e-15) {
698
                        t.Errorf("Sinh(%g) = %g, want %g", vc[i], f, sinh[i])
699
                }
700
        }
701
        for i := 0; i < len(vcSinhSC); i++ {
702
                if f := Sinh(vcSinhSC[i]); !cAlike(sinhSC[i], f) {
703
                        t.Errorf("Sinh(%g) = %g, want %g", vcSinhSC[i], f, sinhSC[i])
704
                }
705
        }
706
}
707
func TestSqrt(t *testing.T) {
708
        for i := 0; i < len(vc); i++ {
709
                if f := Sqrt(vc[i]); !cVeryclose(sqrt[i], f) {
710
                        t.Errorf("Sqrt(%g) = %g, want %g", vc[i], f, sqrt[i])
711
                }
712
        }
713
        for i := 0; i < len(vcSqrtSC); i++ {
714
                if f := Sqrt(vcSqrtSC[i]); !cAlike(sqrtSC[i], f) {
715
                        t.Errorf("Sqrt(%g) = %g, want %g", vcSqrtSC[i], f, sqrtSC[i])
716
                }
717
        }
718
}
719
func TestTan(t *testing.T) {
720
        for i := 0; i < len(vc); i++ {
721
                if f := Tan(vc[i]); !cSoclose(tan[i], f, 3e-15) {
722
                        t.Errorf("Tan(%g) = %g, want %g", vc[i], f, tan[i])
723
                }
724
        }
725
        for i := 0; i < len(vcTanSC); i++ {
726
                if f := Tan(vcTanSC[i]); !cAlike(tanSC[i], f) {
727
                        t.Errorf("Tan(%g) = %g, want %g", vcTanSC[i], f, tanSC[i])
728
                }
729
        }
730
}
731
func TestTanh(t *testing.T) {
732
        for i := 0; i < len(vc); i++ {
733
                if f := Tanh(vc[i]); !cSoclose(tanh[i], f, 2e-15) {
734
                        t.Errorf("Tanh(%g) = %g, want %g", vc[i], f, tanh[i])
735
                }
736
        }
737
        for i := 0; i < len(vcTanhSC); i++ {
738
                if f := Tanh(vcTanhSC[i]); !cAlike(tanhSC[i], f) {
739
                        t.Errorf("Tanh(%g) = %g, want %g", vcTanhSC[i], f, tanhSC[i])
740
                }
741
        }
742
}
743
 
744
func BenchmarkAbs(b *testing.B) {
745
        for i := 0; i < b.N; i++ {
746
                Abs(complex(2.5, 3.5))
747
        }
748
}
749
func BenchmarkAcos(b *testing.B) {
750
        for i := 0; i < b.N; i++ {
751
                Acos(complex(2.5, 3.5))
752
        }
753
}
754
func BenchmarkAcosh(b *testing.B) {
755
        for i := 0; i < b.N; i++ {
756
                Acosh(complex(2.5, 3.5))
757
        }
758
}
759
func BenchmarkAsin(b *testing.B) {
760
        for i := 0; i < b.N; i++ {
761
                Asin(complex(2.5, 3.5))
762
        }
763
}
764
func BenchmarkAsinh(b *testing.B) {
765
        for i := 0; i < b.N; i++ {
766
                Asinh(complex(2.5, 3.5))
767
        }
768
}
769
func BenchmarkAtan(b *testing.B) {
770
        for i := 0; i < b.N; i++ {
771
                Atan(complex(2.5, 3.5))
772
        }
773
}
774
func BenchmarkAtanh(b *testing.B) {
775
        for i := 0; i < b.N; i++ {
776
                Atanh(complex(2.5, 3.5))
777
        }
778
}
779
func BenchmarkConj(b *testing.B) {
780
        for i := 0; i < b.N; i++ {
781
                Conj(complex(2.5, 3.5))
782
        }
783
}
784
func BenchmarkCos(b *testing.B) {
785
        for i := 0; i < b.N; i++ {
786
                Cos(complex(2.5, 3.5))
787
        }
788
}
789
func BenchmarkCosh(b *testing.B) {
790
        for i := 0; i < b.N; i++ {
791
                Cosh(complex(2.5, 3.5))
792
        }
793
}
794
func BenchmarkExp(b *testing.B) {
795
        for i := 0; i < b.N; i++ {
796
                Exp(complex(2.5, 3.5))
797
        }
798
}
799
func BenchmarkLog(b *testing.B) {
800
        for i := 0; i < b.N; i++ {
801
                Log(complex(2.5, 3.5))
802
        }
803
}
804
func BenchmarkLog10(b *testing.B) {
805
        for i := 0; i < b.N; i++ {
806
                Log10(complex(2.5, 3.5))
807
        }
808
}
809
func BenchmarkPhase(b *testing.B) {
810
        for i := 0; i < b.N; i++ {
811
                Phase(complex(2.5, 3.5))
812
        }
813
}
814
func BenchmarkPolar(b *testing.B) {
815
        for i := 0; i < b.N; i++ {
816
                Polar(complex(2.5, 3.5))
817
        }
818
}
819
func BenchmarkPow(b *testing.B) {
820
        for i := 0; i < b.N; i++ {
821
                Pow(complex(2.5, 3.5), complex(2.5, 3.5))
822
        }
823
}
824
func BenchmarkRect(b *testing.B) {
825
        for i := 0; i < b.N; i++ {
826
                Rect(2.5, 1.5)
827
        }
828
}
829
func BenchmarkSin(b *testing.B) {
830
        for i := 0; i < b.N; i++ {
831
                Sin(complex(2.5, 3.5))
832
        }
833
}
834
func BenchmarkSinh(b *testing.B) {
835
        for i := 0; i < b.N; i++ {
836
                Sinh(complex(2.5, 3.5))
837
        }
838
}
839
func BenchmarkSqrt(b *testing.B) {
840
        for i := 0; i < b.N; i++ {
841
                Sqrt(complex(2.5, 3.5))
842
        }
843
}
844
func BenchmarkTan(b *testing.B) {
845
        for i := 0; i < b.N; i++ {
846
                Tan(complex(2.5, 3.5))
847
        }
848
}
849
func BenchmarkTanh(b *testing.B) {
850
        for i := 0; i < b.N; i++ {
851
                Tanh(complex(2.5, 3.5))
852
        }
853
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.