30#define USE_VAL_WITH_FLAGS
31#define USE_NAN_WITH_FLAGS
32#define USE_SCALEDOUBLE_1
33#define USE_SCALEDOUBLE_2
34#define USE_SCALEUPDOUBLE1024
35#define USE_SCALEDOWNDOUBLE
36#define USE_HANDLE_ERROR
38#undef USE_VAL_WITH_FLAGS
39#undef USE_NAN_WITH_FLAGS
40#undef USE_SCALEDOUBLE_1
41#undef USE_SCALEDOUBLE_2
42#undef USE_SCALEUPDOUBLE1024
43#undef USE_SCALEDOWNDOUBLE
44#undef USE_HANDLE_ERROR
49#pragma function(atan2)
60 static const double atan_jby256_lead[ 241] = {
61 6.24187886714935302734e-02,
62 6.63088560104370117188e-02,
63 7.01969265937805175781e-02,
64 7.40829110145568847656e-02,
65 7.79666304588317871094e-02,
66 8.18479657173156738281e-02,
67 8.57268571853637695312e-02,
68 8.96031260490417480469e-02,
69 9.34767723083496093750e-02,
70 9.73475575447082519531e-02,
71 1.01215422153472900391e-01,
72 1.05080246925354003906e-01,
73 1.08941912651062011719e-01,
74 1.12800359725952148438e-01,
75 1.16655409336090087891e-01,
76 1.20507001876831054688e-01,
77 1.24354958534240722656e-01,
78 1.28199219703674316406e-01,
79 1.32039666175842285156e-01,
80 1.35876297950744628906e-01,
81 1.39708757400512695312e-01,
82 1.43537282943725585938e-01,
83 1.47361397743225097656e-01,
84 1.51181221008300781250e-01,
85 1.54996633529663085938e-01,
86 1.58807516098022460938e-01,
87 1.62613749504089355469e-01,
88 1.66415214538574218750e-01,
89 1.70211911201477050781e-01,
90 1.74003481864929199219e-01,
91 1.77790164947509765625e-01,
92 1.81571602821350097656e-01,
93 1.85347914695739746094e-01,
94 1.89118742942810058594e-01,
95 1.92884206771850585938e-01,
96 1.96644186973571777344e-01,
97 2.00398445129394531250e-01,
98 2.04147100448608398438e-01,
99 2.07889914512634277344e-01,
100 2.11626768112182617188e-01,
101 2.15357661247253417969e-01,
102 2.19082474708557128906e-01,
103 2.22801089286804199219e-01,
104 2.26513504981994628906e-01,
105 2.30219483375549316406e-01,
106 2.33919143676757812500e-01,
107 2.37612247467041015625e-01,
108 2.41298794746398925781e-01,
109 2.44978547096252441406e-01,
110 2.48651623725891113281e-01,
111 2.52317905426025390625e-01,
112 2.55977153778076171875e-01,
113 2.59629487991333007812e-01,
114 2.63274669647216796875e-01,
115 2.66912937164306640625e-01,
116 2.70543813705444335938e-01,
117 2.74167299270629882812e-01,
118 2.77783632278442382812e-01,
119 2.81392335891723632812e-01,
120 2.84993648529052734375e-01,
121 2.88587331771850585938e-01,
122 2.92173147201538085938e-01,
123 2.95751571655273437500e-01,
124 2.99322128295898437500e-01,
125 3.02884817123413085938e-01,
126 3.06439399719238281250e-01,
127 3.09986352920532226562e-01,
128 3.13524961471557617188e-01,
129 3.17055702209472656250e-01,
130 3.20578098297119140625e-01,
131 3.24092388153076171875e-01,
132 3.27598333358764648438e-01,
133 3.31095933914184570312e-01,
134 3.34585189819335937500e-01,
135 3.38066101074218750000e-01,
136 3.41538190841674804688e-01,
137 3.45002174377441406250e-01,
138 3.48457098007202148438e-01,
139 3.51903676986694335938e-01,
140 3.55341434478759765625e-01,
141 3.58770608901977539062e-01,
142 3.62190723419189453125e-01,
143 3.65602254867553710938e-01,
144 3.69004726409912109375e-01,
145 3.72398376464843750000e-01,
146 3.75782966613769531250e-01,
147 3.79158496856689453125e-01,
148 3.82525205612182617188e-01,
149 3.85882616043090820312e-01,
150 3.89230966567993164062e-01,
151 3.92570018768310546875e-01,
152 3.95900011062622070312e-01,
153 3.99220705032348632812e-01,
154 4.02532100677490234375e-01,
155 4.05834197998046875000e-01,
156 4.09126996994018554688e-01,
157 4.12410259246826171875e-01,
158 4.15684223175048828125e-01,
159 4.18948888778686523438e-01,
160 4.22204017639160156250e-01,
161 4.25449609756469726562e-01,
162 4.28685665130615234375e-01,
163 4.31912183761596679688e-01,
164 4.35129165649414062500e-01,
165 4.38336372375488281250e-01,
166 4.41534280776977539062e-01,
167 4.44722414016723632812e-01,
168 4.47900772094726562500e-01,
169 4.51069593429565429688e-01,
170 4.54228639602661132812e-01,
171 4.57377910614013671875e-01,
172 4.60517644882202148438e-01,
173 4.63647603988647460938e-01,
174 4.66767549514770507812e-01,
175 4.69877958297729492188e-01,
176 4.72978591918945312500e-01,
177 4.76069211959838867188e-01,
178 4.79150056838989257812e-01,
179 4.82221126556396484375e-01,
180 4.85282421112060546875e-01,
181 4.88333940505981445312e-01,
182 4.91375446319580078125e-01,
183 4.94406938552856445312e-01,
184 4.97428894042968750000e-01,
185 5.00440597534179687500e-01,
186 5.03442764282226562500e-01,
187 5.06434917449951171875e-01,
188 5.09417057037353515625e-01,
189 5.12389183044433593750e-01,
190 5.15351772308349609375e-01,
191 5.18304347991943359375e-01,
192 5.21246910095214843750e-01,
193 5.24179458618164062500e-01,
194 5.27101993560791015625e-01,
195 5.30014991760253906250e-01,
196 5.32917976379394531250e-01,
197 5.35810947418212890625e-01,
198 5.38693904876708984375e-01,
199 5.41567325592041015625e-01,
200 5.44430732727050781250e-01,
201 5.47284126281738281250e-01,
202 5.50127506256103515625e-01,
203 5.52961349487304687500e-01,
204 5.55785179138183593750e-01,
205 5.58598995208740234375e-01,
206 5.61403274536132812500e-01,
207 5.64197540283203125000e-01,
208 5.66981792449951171875e-01,
209 5.69756031036376953125e-01,
210 5.72520732879638671875e-01,
211 5.75275897979736328125e-01,
212 5.78021049499511718750e-01,
213 5.80756187438964843750e-01,
214 5.83481788635253906250e-01,
215 5.86197376251220703125e-01,
216 5.88903427124023437500e-01,
217 5.91599464416503906250e-01,
218 5.94285964965820312500e-01,
219 5.96962928771972656250e-01,
220 5.99629878997802734375e-01,
221 6.02287292480468750000e-01,
222 6.04934692382812500000e-01,
223 6.07573032379150390625e-01,
224 6.10201358795166015625e-01,
225 6.12820148468017578125e-01,
226 6.15428924560546875000e-01,
227 6.18028640747070312500e-01,
228 6.20618820190429687500e-01,
229 6.23198986053466796875e-01,
230 6.25770092010498046875e-01,
231 6.28331184387207031250e-01,
232 6.30883216857910156250e-01,
233 6.33425712585449218750e-01,
234 6.35958671569824218750e-01,
235 6.38482093811035156250e-01,
236 6.40995979309082031250e-01,
237 6.43500804901123046875e-01,
238 6.45996093750000000000e-01,
239 6.48482322692871093750e-01,
240 6.50959014892578125000e-01,
241 6.53426170349121093750e-01,
242 6.55884265899658203125e-01,
243 6.58332824707031250000e-01,
244 6.60772323608398437500e-01,
245 6.63202762603759765625e-01,
246 6.65623664855957031250e-01,
247 6.68035984039306640625e-01,
248 6.70438766479492187500e-01,
249 6.72832489013671875000e-01,
250 6.75216674804687500000e-01,
251 6.77592277526855468750e-01,
252 6.79958820343017578125e-01,
253 6.82316303253173828125e-01,
254 6.84664726257324218750e-01,
255 6.87004089355468750000e-01,
256 6.89334869384765625000e-01,
257 6.91656589508056640625e-01,
258 6.93969249725341796875e-01,
259 6.96272850036621093750e-01,
260 6.98567867279052734375e-01,
261 7.00854301452636718750e-01,
262 7.03131675720214843750e-01,
263 7.05400466918945312500e-01,
264 7.07660198211669921875e-01,
265 7.09911346435546875000e-01,
266 7.12153911590576171875e-01,
267 7.14387893676757812500e-01,
268 7.16613292694091796875e-01,
269 7.18829631805419921875e-01,
270 7.21037864685058593750e-01,
271 7.23237514495849609375e-01,
272 7.25428581237792968750e-01,
273 7.27611064910888671875e-01,
274 7.29785442352294921875e-01,
275 7.31950759887695312500e-01,
276 7.34108448028564453125e-01,
277 7.36257076263427734375e-01,
278 7.38397598266601562500e-01,
279 7.40530014038085937500e-01,
280 7.42654323577880859375e-01,
281 7.44770050048828125000e-01,
282 7.46877670288085937500e-01,
283 7.48976707458496093750e-01,
284 7.51068115234375000000e-01,
285 7.53150939941406250000e-01,
286 7.55226135253906250000e-01,
287 7.57292747497558593750e-01,
288 7.59351730346679687500e-01,
289 7.61402606964111328125e-01,
290 7.63445377349853515625e-01,
291 7.65480041503906250000e-01,
292 7.67507076263427734375e-01,
293 7.69526004791259765625e-01,
294 7.71537303924560546875e-01,
295 7.73540973663330078125e-01,
296 7.75536537170410156250e-01,
297 7.77523994445800781250e-01,
298 7.79504299163818359375e-01,
299 7.81476497650146484375e-01,
300 7.83441066741943359375e-01,
301 7.85398006439208984375e-01};
303 static const double atan_jby256_tail[ 241] = {
304 2.13244638182005395671e-08,
305 3.89093864761712760656e-08,
306 4.44780900009437454576e-08,
307 1.15344768460112754160e-08,
308 3.37271051945395312705e-09,
309 2.40857608736109859459e-08,
310 1.85853810450623807768e-08,
311 5.14358299969225078306e-08,
312 8.85023985412952486748e-09,
313 1.59425154214358432060e-08,
314 1.95139937737755753164e-08,
315 2.64909755273544319715e-08,
316 4.43388037881231070144e-08,
317 2.14757072421821274557e-08,
318 2.61049792670754218852e-08,
319 7.81439350674466302231e-09,
320 3.60125207123751024094e-08,
321 6.15276238179343767917e-08,
322 9.54387964641184285058e-08,
323 3.02789566851502754129e-08,
324 1.16888650949870856331e-07,
325 1.07580956468653338863e-08,
326 8.33454265379535427653e-08,
327 1.10790279272629526068e-07,
328 1.08394277896366207424e-07,
329 9.22176086126841098800e-08,
330 7.90938592199048786990e-08,
331 8.66445407164293125637e-08,
332 1.40839973537092438671e-08,
333 1.19070438507307600689e-07,
334 6.40451663051716197071e-08,
335 1.08338682076343674522e-07,
336 3.52999550187922736222e-08,
337 1.05983273930043077202e-07,
338 1.05486124078259553339e-07,
339 5.82167732281776477773e-08,
340 1.08696483983403942633e-07,
341 4.47335086122377542835e-08,
342 1.26896287162615723528e-08,
343 4.06534471589151404531e-08,
344 3.84504846300557026690e-08,
345 3.60715006404807269080e-08,
346 6.44725903165522722801e-08,
347 3.63749249976409461305e-08,
348 1.03901294413833913794e-07,
349 6.25379756302167880580e-08,
350 6.63984302368488828029e-08,
351 3.21844598971548278059e-08,
352 1.16030611712765830905e-07,
353 1.17464622142347730134e-07,
354 7.54604017965808996596e-08,
355 1.49234929356206556899e-07,
356 1.41416924523217430259e-07,
357 2.13308065617483489011e-07,
358 5.04230937933302320146e-08,
359 5.45874922281655519035e-08,
360 1.51849028914786868886e-07,
361 3.09004308703769273010e-08,
362 9.67574548184738317664e-08,
363 4.02508285529322212824e-08,
364 3.01222268096861091157e-08,
365 2.36189860670079288680e-07,
366 1.14095158111080887695e-07,
367 7.42349089746573467487e-08,
368 5.12515583196230380184e-08,
369 2.19290391828763918102e-07,
370 3.83263512187553886471e-08,
371 1.61513486284090523855e-07,
372 5.09996743535589922261e-08,
373 1.23694037861246766534e-07,
374 8.23367955351123783984e-08,
375 1.07591766213053694014e-07,
376 1.42789947524631815640e-07,
377 1.32347123024711878538e-07,
378 2.17626067316598149229e-08,
379 2.34454866923044288656e-07,
380 2.82966370261766916053e-09,
381 2.29300919890907632975e-07,
382 1.48428270450261284915e-07,
383 1.87937408574313982512e-07,
384 6.13685946813334055347e-08,
385 1.98585022733583817493e-07,
386 7.68394131623752961662e-08,
387 1.28119052312436745644e-07,
388 7.02119104719236502733e-08,
389 9.87954793820636301943e-08,
390 1.72176752381034986217e-07,
391 1.12877225146169704119e-08,
392 5.33549829555851737993e-08,
393 2.13833275710816521345e-08,
394 1.16243518048290556393e-07,
395 6.29926408369055877943e-08,
396 6.45429039328021963791e-08,
397 8.64001922814281933403e-08,
398 9.50767572202325800240e-08,
399 5.80851497508121135975e-08,
400 1.82350561135024766232e-07,
401 1.98948680587390608655e-07,
402 7.83548663450197659846e-08,
403 3.04374234486798594427e-08,
404 2.76135725629797411787e-08,
405 4.32610105454203065470e-08,
406 5.17107515324127256994e-08,
407 2.82398327875841444660e-08,
408 1.87482469524195595399e-07,
409 2.97481891662714096139e-08,
410 9.94421570843584316402e-09,
411 1.07056210730391848428e-07,
412 6.25589580466881163081e-08,
413 9.56641013869464593803e-08,
414 1.88056307148355440276e-07,
415 8.38850689379557880950e-08,
416 5.01215865527674122924e-09,
417 1.74166095998522089762e-07,
418 9.96779574395363585849e-08,
419 5.98432026368321460686e-09,
420 1.18362922366887577169e-07,
421 1.86086833284154215946e-07,
422 1.97671457251348941011e-07,
423 1.42447160717199237159e-07,
424 1.05504240785546574184e-08,
425 3.13335218371639189324e-08,
426 1.96518418901914535399e-07,
427 2.17692035039173536059e-08,
428 2.15613114426529981675e-07,
429 5.68271098300441214948e-08,
430 1.70331455823369124256e-08,
431 9.17590028095709583247e-08,
432 2.77266304112916566247e-07,
433 9.37041937614656939690e-08,
434 1.56116346368316796511e-08,
435 4.13967433808382727413e-08,
436 1.70164749185821616276e-07,
437 4.01708788545600086008e-07,
438 2.59663539226050551563e-07,
439 2.22007487655027469542e-07,
440 2.90542250809644081369e-07,
441 4.67720537666628903341e-07,
442 2.79799803956772554802e-07,
443 2.07344552327432547723e-07,
444 2.54705698692735196368e-07,
445 4.26848589539548450728e-07,
446 2.52506723633552216197e-07,
447 2.14684129933849704964e-07,
448 3.20134822201596505431e-07,
449 9.93537565749855712134e-08,
450 3.70792944827917252327e-08,
451 1.41772749369083698972e-07,
452 4.22446601490198804306e-07,
453 4.11818433724801511540e-07,
454 1.19976381502605310519e-07,
455 3.43703078571520905265e-08,
456 1.66128705555453270379e-07,
457 5.00499610023283006540e-08,
458 1.75105139941208062123e-07,
459 7.70807146729030327334e-08,
460 2.45918607526895836121e-07,
461 2.18359020958626199345e-07,
462 8.44342887976445333569e-09,
463 1.07506148687888629299e-07,
464 5.36544954316820904572e-08,
465 3.39109101518396596341e-07,
466 2.60098720293920613340e-08,
467 8.42678991664621455827e-08,
468 5.36972237470183633197e-08,
469 4.28192558171921681288e-07,
470 2.71535491483955143294e-07,
471 7.84094998145075780203e-08,
472 3.43880599134117431863e-07,
473 1.32878065060366481043e-07,
474 4.18046802627967629428e-07,
475 2.65042411765766019424e-07,
476 1.70383695347518643694e-07,
477 1.54096497259613515678e-07,
478 2.36543402412459813461e-07,
479 4.38416350106876736790e-07,
480 3.03892161339927775731e-07,
481 3.31136771605664899240e-07,
482 6.49494294526590682218e-08,
483 4.10423429887181345747e-09,
484 1.70831640869113847224e-07,
485 1.10811512657909180966e-07,
486 3.23677724749783611964e-07,
487 3.55662734259192678528e-07,
488 2.30102333489738219140e-07,
489 4.47429004000738629714e-07,
490 7.78167135617329598659e-08,
491 9.90345291908535415737e-08,
492 5.85800913143113728314e-08,
493 4.57859062410871843857e-07,
494 3.67993069723390929794e-07,
495 2.90836464322977276043e-07,
496 2.51621574250131388318e-07,
497 2.75789824740652815545e-07,
498 3.88985776250314403593e-07,
499 1.40214080183768019611e-07,
500 3.23451432223550478373e-08,
501 9.15979180730608444470e-08,
502 3.44371402498640470421e-07,
503 3.40401897215059498077e-07,
504 1.06431813453707950243e-07,
505 1.46204238932338846248e-07,
506 9.94610376972039046878e-09,
507 2.01711528092681771039e-07,
508 2.72027977986191568296e-07,
509 2.48402602511693757964e-07,
510 1.58480011219249621715e-07,
511 3.00372828113368713281e-08,
512 3.67816204583541976394e-07,
513 2.46169793032343824291e-07,
514 1.70080468270204253247e-07,
515 1.67806717763872914315e-07,
516 2.67715622006907942620e-07,
517 2.14411342550299170574e-08,
518 4.11228221283669073277e-07,
519 3.52311752396749662260e-08,
520 3.52718000397367821054e-07,
521 4.38857387992911129814e-07,
522 3.22574606753482540743e-07,
523 3.28730371182804296828e-08,
524 7.56672470607639279700e-08,
525 3.26750155316369681821e-09,
526 3.21724445362095284743e-07,
527 1.06639427371776571151e-07,
528 3.41020788139524715063e-07,
529 1.00582838631232552824e-07,
530 3.68439433859276640065e-07,
531 2.20403078342388012027e-07,
532 1.62841467098298142534e-07,
533 2.25325348296680733838e-07,
534 4.37462238226421614339e-07,
535 3.52055880555040706500e-07,
536 4.75614398494781776825e-07,
537 3.60998399033215317516e-07,
538 3.79292434611513945954e-08,
539 1.29859015528549300061e-08,
540 3.15927546985474913188e-07,
541 2.28533679887379668031e-08,
542 1.17222541823553133877e-07,
543 1.51991208405464415857e-07,
544 1.56958239325240655564e-07};
548 static double pi = 3.1415926535897932e+00,
549 piby2 = 1.5707963267948966e+00,
550 piby4 = 7.8539816339744831e-01,
551 three_piby4 = 2.3561944901923449e+00,
552 pi_head = 3.1415926218032836e+00,
553 pi_tail = 3.1786509547056392e-08,
554 piby2_head = 1.5707963267948965e+00,
555 piby2_tail = 6.1232339957367660e-17;
557 double u,
v, vbyu, q1, q2,
s,
u1, vu1,
u2, vu2, uu,
c,
r;
558 unsigned int swap_vu,
index, xzero, yzero, xnan, ynan, xinf, yinf;
559 int m, xexp, yexp, diffexp;
563 unsigned long long ux,
ui,
aux, xneg, uy, auy, yneg;
567 aux = ux & ~SIGNBIT_DP64;
568 auy = uy & ~SIGNBIT_DP64;
580 diffexp = yexp - xexp;
610 if ((xexp < 1021 && yexp < 1021))
612 scaleUpDouble1024(ux, &ux);
613 scaleUpDouble1024(uy, &uy);
618 diffexp = yexp - xexp;
627 else if (diffexp < -28 && (!xneg))
643 y = scaleDouble_1(
y, 100);
647 scaleDownDouble(uy, 100, &uy);
658 else if (diffexp < -56 && xneg)
664 else if (yinf && xinf)
689 if (swap_vu) { uu =
u;
u =
v;
v = uu; }
697 q1 = atan_jby256_lead[
index-16];
698 q2 = atan_jby256_tail[
index-16];
702 u = scaleDouble_2(
u,-
m);
703 v = scaleDouble_2(
v,-
m);
713 q2 = q2 +
r -
r*(
s * (0.33333333333224095522 -
s*(0.19999918038989143496)));
715 else if (vbyu < 1.e-8)
735 ((((
v -
u1*vu1) -
u2*vu1) -
u*vu2)/
u -
736 (vbyu*
s*(0.33333333333333170500 -
737 s*(0.19999999999393223405 -
738 s*(0.14285713561807169030 -
739 s*(0.11110736283514525407 -
740 s*(0.90029810285449784439E-01)))))));
745 if (swap_vu) {q1 = piby2_head - q1; q2 = piby2_tail - q2;}
746 if (xneg) {q1 = pi_head - q1; q2 = pi_tail - q2;}
double __cdecl _handle_error(char *fname, int opcode, unsigned long long value, int type, int flags, int error, double arg1, double arg2, int nargs)
Handles an error condition.
double FN_PROTOTYPE() atan2(double y, double x)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLdouble GLdouble GLdouble r
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
#define FN_PROTOTYPE(fname)
#define EXPSHIFTBITS_DP64
#define GET_BITS_DP64(x, ux)
#define PUT_BITS_DP64(ux, x)