1DLAQR5(1) LAPACK auxiliary routine (version 3.1) DLAQR5(1)
2
3
4
7 SUBROUTINE DLAQR5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, SR, SI,
8 H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV, WV,
9 LDWV, NH, WH, LDWH )
10
11 INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV, LDWH,
12 LDWV, LDZ, N, NH, NSHFTS, NV
13
14 LOGICAL WANTT, WANTZ
15
16 DOUBLE PRECISION H( LDH, * ), SI( * ), SR( * ), U( LDU, *
17 ), V( LDV, * ), WH( LDWH, * ), WV( LDWV, * ), Z(
18 LDZ, * )
19
20 DOUBLE PRECISION ZERO, ONE
21
22 PARAMETER ( ZERO = 0.0d0, ONE = 1.0d0 )
23
24 DOUBLE PRECISION ALPHA, BETA, H11, H12, H21, H22, REFSUM,
25 SAFMAX, SAFMIN, SCL, SMLNUM, SWAP, TST1, TST2, ULP
26
27 INTEGER I, I2, I4, INCOL, J, J2, J4, JBOT, JCOL, JLEN, JROW,
28 JTOP, K, K1, KDU, KMS, KNZ, KRCOL, KZS, M, M22,
29 MBOT, MEND, MSTART, MTOP, NBMPS, NDCOL, NS, NU
30
31 LOGICAL ACCUM, BLK22, BMP22
32
33 DOUBLE PRECISION DLAMCH
34
35 EXTERNAL DLAMCH
36
37 INTRINSIC ABS, DBLE, MAX, MIN, MOD
38
39 DOUBLE PRECISION VT( 3 )
40
41 EXTERNAL DGEMM, DLABAD, DLACPY, DLAQR1, DLARFG, DLASET, DTRMM
42
43 IF( NSHFTS.LT.2 ) RETURN
44
45 IF( KTOP.GE.KBOT ) RETURN
46
47 DO 10 I = 1, NSHFTS - 2, 2
48
49 IF( SI( I ).NE.-SI( I+1 ) ) THEN
50
51 SWAP = SR( I )
52
53 SR( I ) = SR( I+1 )
54
55 SR( I+1 ) = SR( I+2 )
56
57 SR( I+2 ) = SWAP
58
59 SWAP = SI( I )
60
61 SI( I ) = SI( I+1 )
62
63 SI( I+1 ) = SI( I+2 )
64
65 SI( I+2 ) = SWAP
66
67 END IF
68
69 10 CONTINUE
70
71 NS = NSHFTS - MOD( NSHFTS, 2 )
72
73 SAFMIN = DLAMCH( 'SAFE MINIMUM' )
74
75 SAFMAX = ONE / SAFMIN
76
77 CALL DLABAD( SAFMIN, SAFMAX )
78
79 ULP = DLAMCH( 'PRECISION' )
80
81 SMLNUM = SAFMIN*( DBLE( N ) / ULP )
82
83 ACCUM = ( KACC22.EQ.1 ) .OR. ( KACC22.EQ.2 )
84
85 BLK22 = ( NS.GT.2 ) .AND. ( KACC22.EQ.2 )
86
87 IF( KTOP+2.LE.KBOT ) H( KTOP+2, KTOP ) = ZERO
88
89 NBMPS = NS / 2
90
91 KDU = 6*NBMPS - 3
92
93 DO 220 INCOL = 3*( 1-NBMPS ) + KTOP - 1, KBOT - 2,
94 3*NBMPS - 2
95
96 NDCOL = INCOL + KDU
97
98 IF( ACCUM ) CALL DLASET( 'ALL', KDU, KDU, ZERO, ONE, U,
99 LDU )
100
101 DO 150 KRCOL = INCOL, MIN( INCOL+3*NBMPS-3, KBOT-2 )
102
103 MTOP = MAX( 1, ( ( KTOP-1 )-KRCOL+2 ) / 3+1 )
104
105 MBOT = MIN( NBMPS, ( KBOT-KRCOL ) / 3 )
106
107 M22 = MBOT + 1
108
109 BMP22 = ( MBOT.LT.NBMPS ) .AND. ( KRCOL+3*( M22-1 ) ).EQ.
110 ( KBOT-2 )
111
112 DO 20 M = MTOP, MBOT
113
114 K = KRCOL + 3*( M-1 )
115
116 IF( K.EQ.KTOP-1 ) THEN
117
118 CALL DLAQR1( 3, H( KTOP, KTOP ), LDH, SR( 2*M-1 ), SI(
119 2*M-1 ), SR( 2*M ), SI( 2*M ), V( 1, M ) )
120
121 ALPHA = V( 1, M )
122
123 CALL DLARFG( 3, ALPHA, V( 2, M ), 1, V( 1, M ) )
124
125 ELSE
126
127 BETA = H( K+1, K )
128
129 V( 2, M ) = H( K+2, K )
130
131 V( 3, M ) = H( K+3, K )
132
133 CALL DLARFG( 3, BETA, V( 2, M ), 1, V( 1, M ) )
134
135 IF( V( 1, M ).NE.ZERO .AND. ( V( 3, M ).NE.ZERO .OR. (
136 H( K+3, K+1 ).EQ.ZERO .AND. H( K+3, K+2 ).EQ.ZERO )
137 ) ) THEN
138
139 H( K+1, K ) = BETA
140
141 H( K+2, K ) = ZERO
142
143 H( K+3, K ) = ZERO
144
145 ELSE
146
147 CALL DLAQR1( 3, H( K+1, K+1 ), LDH, SR( 2*M-1 ), SI(
148 2*M-1 ), SR( 2*M ), SI( 2*M ), VT )
149
150 SCL = ABS( VT( 1 ) ) + ABS( VT( 2 ) ) + ABS( VT( 3 ) )
151
152 IF( SCL.NE.ZERO ) THEN
153
154 VT( 1 ) = VT( 1 ) / SCL
155
156 VT( 2 ) = VT( 2 ) / SCL
157
158 VT( 3 ) = VT( 3 ) / SCL
159
160 END IF
161
162 IF( ABS( H( K+1, K ) )*( ABS( VT( 2 ) )+ ABS( VT( 3 ) )
163 ).GT.ULP*ABS( VT( 1 ) )* ( ABS( H( K, K ) )+ABS( H(
164 K+1, K+1 ) )+ABS( H( K+2, K+2 ) ) ) ) THEN
165
166 IF( V( 2, M ).EQ.ZERO .AND. V( 3, M ).EQ.ZERO ) THEN
167
168 V( 1, M ) = ZERO
169
170 ELSE
171
172 H( K+1, K ) = BETA
173
174 H( K+2, K ) = ZERO
175
176 H( K+3, K ) = ZERO
177
178 END IF
179
180 ELSE
181
182 ALPHA = VT( 1 )
183
184 CALL DLARFG( 3, ALPHA, VT( 2 ), 1, VT( 1 ) )
185
186 REFSUM = H( K+1, K ) + H( K+2, K )*VT( 2 ) + H( K+3, K
187 )*VT( 3 )
188
189 H( K+1, K ) = H( K+1, K ) - VT( 1 )*REFSUM
190
191 H( K+2, K ) = ZERO
192
193 H( K+3, K ) = ZERO
194
195 V( 1, M ) = VT( 1 )
196
197 V( 2, M ) = VT( 2 )
198
199 V( 3, M ) = VT( 3 )
200
201 END IF
202
203 END IF
204
205 END IF
206
207 20 CONTINUE
208
209 K = KRCOL + 3*( M22-1 )
210
211 IF( BMP22 ) THEN
212
213 IF( K.EQ.KTOP-1 ) THEN
214
215 CALL DLAQR1( 2, H( K+1, K+1 ), LDH, SR( 2*M22-1 ), SI(
216 2*M22-1 ), SR( 2*M22 ), SI( 2*M22 ), V( 1, M22 ) )
217
218 BETA = V( 1, M22 )
219
220 CALL DLARFG( 2, BETA, V( 2, M22 ), 1, V( 1, M22 ) )
221
222 ELSE
223
224 BETA = H( K+1, K )
225
226 V( 2, M22 ) = H( K+2, K )
227
228 CALL DLARFG( 2, BETA, V( 2, M22 ), 1, V( 1, M22 ) )
229
230 H( K+1, K ) = BETA
231
232 H( K+2, K ) = ZERO
233
234 END IF
235
236 ELSE
237
238 V( 1, M22 ) = ZERO
239
240 END IF
241
242 IF( ACCUM ) THEN
243
244 JBOT = MIN( NDCOL, KBOT )
245
246 ELSE IF( WANTT ) THEN
247
248 JBOT = N
249
250 ELSE
251
252 JBOT = KBOT
253
254 END IF
255
256 DO 40 J = MAX( KTOP, KRCOL ), JBOT
257
258 MEND = MIN( MBOT, ( J-KRCOL+2 ) / 3 )
259
260 DO 30 M = MTOP, MEND
261
262 K = KRCOL + 3*( M-1 )
263
264 REFSUM = V( 1, M )*( H( K+1, J )+V( 2, M )* H( K+2, J )+V(
265 3, M )*H( K+3, J ) )
266
267 H( K+1, J ) = H( K+1, J ) - REFSUM
268
269 H( K+2, J ) = H( K+2, J ) - REFSUM*V( 2, M )
270
271 H( K+3, J ) = H( K+3, J ) - REFSUM*V( 3, M )
272
273 30 CONTINUE
274
275 40 CONTINUE
276
277 IF( BMP22 ) THEN
278
279 K = KRCOL + 3*( M22-1 )
280
281 DO 50 J = MAX( K+1, KTOP ), JBOT
282
283 REFSUM = V( 1, M22 )*( H( K+1, J )+V( 2, M22 )* H( K+2, J )
284 )
285
286 H( K+1, J ) = H( K+1, J ) - REFSUM
287
288 H( K+2, J ) = H( K+2, J ) - REFSUM*V( 2, M22 )
289
290 50 CONTINUE
291
292 END IF
293
294 IF( ACCUM ) THEN
295
296 JTOP = MAX( KTOP, INCOL )
297
298 ELSE IF( WANTT ) THEN
299
300 JTOP = 1
301
302 ELSE
303
304 JTOP = KTOP
305
306 END IF
307
308 DO 90 M = MTOP, MBOT
309
310 IF( V( 1, M ).NE.ZERO ) THEN
311
312 K = KRCOL + 3*( M-1 )
313
314 DO 60 J = JTOP, MIN( KBOT, K+3 )
315
316 REFSUM = V( 1, M )*( H( J, K+1 )+V( 2, M )* H( J, K+2 )+V(
317 3, M )*H( J, K+3 ) )
318
319 H( J, K+1 ) = H( J, K+1 ) - REFSUM
320
321 H( J, K+2 ) = H( J, K+2 ) - REFSUM*V( 2, M )
322
323 H( J, K+3 ) = H( J, K+3 ) - REFSUM*V( 3, M )
324
325 60 CONTINUE
326
327 IF( ACCUM ) THEN
328
329 KMS = K - INCOL
330
331 DO 70 J = MAX( 1, KTOP-INCOL ), KDU
332
333 REFSUM = V( 1, M )*( U( J, KMS+1 )+V( 2, M )* U( J, KMS+2
334 )+V( 3, M )*U( J, KMS+3 ) )
335
336 U( J, KMS+1 ) = U( J, KMS+1 ) - REFSUM
337
338 U( J, KMS+2 ) = U( J, KMS+2 ) - REFSUM*V( 2, M )
339
340 U( J, KMS+3 ) = U( J, KMS+3 ) - REFSUM*V( 3, M )
341
342 70 CONTINUE
343
344 ELSE IF( WANTZ ) THEN
345
346 DO 80 J = ILOZ, IHIZ
347
348 REFSUM = V( 1, M )*( Z( J, K+1 )+V( 2, M )* Z( J, K+2 )+V(
349 3, M )*Z( J, K+3 ) )
350
351 Z( J, K+1 ) = Z( J, K+1 ) - REFSUM
352
353 Z( J, K+2 ) = Z( J, K+2 ) - REFSUM*V( 2, M )
354
355 Z( J, K+3 ) = Z( J, K+3 ) - REFSUM*V( 3, M )
356
357 80 CONTINUE
358
359 END IF
360
361 END IF
362
363 90 CONTINUE
364
365 K = KRCOL + 3*( M22-1 )
366
367 IF( BMP22 .AND. ( V( 1, M22 ).NE.ZERO ) ) THEN
368
369 DO 100 J = JTOP, MIN( KBOT, K+3 )
370
371 REFSUM = V( 1, M22 )*( H( J, K+1 )+V( 2, M22 )* H( J, K+2 )
372 )
373
374 H( J, K+1 ) = H( J, K+1 ) - REFSUM
375
376 H( J, K+2 ) = H( J, K+2 ) - REFSUM*V( 2, M22 )
377
378 100 CONTINUE
379
380 IF( ACCUM ) THEN
381
382 KMS = K - INCOL
383
384 DO 110 J = MAX( 1, KTOP-INCOL ), KDU
385
386 REFSUM = V( 1, M22 )*( U( J, KMS+1 )+V( 2, M22 )* U( J,
387 KMS+2 ) )
388
389 U( J, KMS+1 ) = U( J, KMS+1 ) - REFSUM
390
391 U( J, KMS+2 ) = U( J, KMS+2 ) - REFSUM*V( 2, M22 )
392
393 110 CONTINUE
394
395 ELSE IF( WANTZ ) THEN
396
397 DO 120 J = ILOZ, IHIZ
398
399 REFSUM = V( 1, M22 )*( Z( J, K+1 )+V( 2, M22 )* Z( J, K+2 )
400 )
401
402 Z( J, K+1 ) = Z( J, K+1 ) - REFSUM
403
404 Z( J, K+2 ) = Z( J, K+2 ) - REFSUM*V( 2, M22 )
405
406 120 CONTINUE
407
408 END IF
409
410 END IF
411
412 MSTART = MTOP
413
414 IF( KRCOL+3*( MSTART-1 ).LT.KTOP ) MSTART = MSTART + 1
415
416 MEND = MBOT
417
418 IF( BMP22 ) MEND = MEND + 1
419
420 IF( KRCOL.EQ.KBOT-2 ) MEND = MEND + 1
421
422 DO 130 M = MSTART, MEND
423
424 K = MIN( KBOT-1, KRCOL+3*( M-1 ) )
425
426 IF( H( K+1, K ).NE.ZERO ) THEN
427
428 TST1 = ABS( H( K, K ) ) + ABS( H( K+1, K+1 ) )
429
430 IF( TST1.EQ.ZERO ) THEN
431
432 IF( K.GE.KTOP+1 ) TST1 = TST1 + ABS( H( K, K-1 ) )
433
434 IF( K.GE.KTOP+2 ) TST1 = TST1 + ABS( H( K, K-2 ) )
435
436 IF( K.GE.KTOP+3 ) TST1 = TST1 + ABS( H( K, K-3 ) )
437
438 IF( K.LE.KBOT-2 ) TST1 = TST1 + ABS( H( K+2, K+1 ) )
439
440 IF( K.LE.KBOT-3 ) TST1 = TST1 + ABS( H( K+3, K+1 ) )
441
442 IF( K.LE.KBOT-4 ) TST1 = TST1 + ABS( H( K+4, K+1 ) )
443
444 END IF
445
446 IF( ABS( H( K+1, K ) ).LE.MAX( SMLNUM, ULP*TST1 ) ) THEN
447
448 H12 = MAX( ABS( H( K+1, K ) ), ABS( H( K, K+1 ) ) )
449
450 H21 = MIN( ABS( H( K+1, K ) ), ABS( H( K, K+1 ) ) )
451
452 H11 = MAX( ABS( H( K+1, K+1 ) ), ABS( H( K, K )-H( K+1,
453 K+1 ) ) )
454
455 H22 = MIN( ABS( H( K+1, K+1 ) ), ABS( H( K, K )-H( K+1,
456 K+1 ) ) )
457
458 SCL = H11 + H12
459
460 TST2 = H22*( H11 / SCL )
461
462 IF( TST2.EQ.ZERO .OR. H21*( H12 / SCL ).LE. MAX( SML‐
463 NUM, ULP*TST2 ) )H( K+1, K ) = ZERO
464
465 END IF
466
467 END IF
468
469 130 CONTINUE
470
471 MEND = MIN( NBMPS, ( KBOT-KRCOL-1 ) / 3 )
472
473 DO 140 M = MTOP, MEND
474
475 K = KRCOL + 3*( M-1 )
476
477 REFSUM = V( 1, M )*V( 3, M )*H( K+4, K+3 )
478
479 H( K+4, K+1 ) = -REFSUM
480
481 H( K+4, K+2 ) = -REFSUM*V( 2, M )
482
483 H( K+4, K+3 ) = H( K+4, K+3 ) - REFSUM*V( 3, M )
484
485 140 CONTINUE
486
487 150 CONTINUE
488
489 IF( ACCUM ) THEN
490
491 IF( WANTT ) THEN
492
493 JTOP = 1
494
495 JBOT = N
496
497 ELSE
498
499 JTOP = KTOP
500
501 JBOT = KBOT
502
503 END IF
504
505 IF( ( .NOT.BLK22 ) .OR. ( INCOL.LT.KTOP ) .OR. (
506 NDCOL.GT.KBOT ) .OR. ( NS.LE.2 ) ) THEN
507
508 K1 = MAX( 1, KTOP-INCOL )
509
510 NU = ( KDU-MAX( 0, NDCOL-KBOT ) ) - K1 + 1
511
512 DO 160 JCOL = MIN( NDCOL, KBOT ) + 1, JBOT, NH
513
514 JLEN = MIN( NH, JBOT-JCOL+1 )
515
516 CALL DGEMM( 'C', 'N', NU, JLEN, NU, ONE, U( K1, K1 ),
517 LDU, H( INCOL+K1, JCOL ), LDH, ZERO, WH, LDWH )
518
519 CALL DLACPY( 'ALL', NU, JLEN, WH, LDWH, H( INCOL+K1, JCOL
520 ), LDH )
521
522 160 CONTINUE
523
524 DO 170 JROW = JTOP, MAX( KTOP, INCOL ) - 1, NV
525
526 JLEN = MIN( NV, MAX( KTOP, INCOL )-JROW )
527
528 CALL DGEMM( 'N', 'N', JLEN, NU, NU, ONE, H( JROW,
529 INCOL+K1 ), LDH, U( K1, K1 ), LDU, ZERO, WV, LDWV )
530
531 CALL DLACPY( 'ALL', JLEN, NU, WV, LDWV, H( JROW, INCOL+K1
532 ), LDH )
533
534 170 CONTINUE
535
536 IF( WANTZ ) THEN
537
538 DO 180 JROW = ILOZ, IHIZ, NV
539
540 JLEN = MIN( NV, IHIZ-JROW+1 )
541
542 CALL DGEMM( 'N', 'N', JLEN, NU, NU, ONE, Z( JROW,
543 INCOL+K1 ), LDZ, U( K1, K1 ), LDU, ZERO, WV, LDWV )
544
545 CALL DLACPY( 'ALL', JLEN, NU, WV, LDWV, Z( JROW, INCOL+K1
546 ), LDZ )
547
548 180 CONTINUE
549
550 END IF
551
552 ELSE
553
554 I2 = ( KDU+1 ) / 2
555
556 I4 = KDU
557
558 J2 = I4 - I2
559
560 J4 = KDU
561
562 KZS = ( J4-J2 ) - ( NS+1 )
563
564 KNZ = NS + 1
565
566 DO 190 JCOL = MIN( NDCOL, KBOT ) + 1, JBOT, NH
567
568 JLEN = MIN( NH, JBOT-JCOL+1 )
569
570 CALL DLACPY( 'ALL', KNZ, JLEN, H( INCOL+1+J2, JCOL ),
571 LDH, WH( KZS+1, 1 ), LDWH )
572
573 CALL DLASET( 'ALL', KZS, JLEN, ZERO, ZERO, WH, LDWH )
574
575 CALL DTRMM( 'L', 'U', 'C', 'N', KNZ, JLEN, ONE, U( J2+1,
576 1+KZS ), LDU, WH( KZS+1, 1 ), LDWH )
577
578 CALL DGEMM( 'C', 'N', I2, JLEN, J2, ONE, U, LDU, H(
579 INCOL+1, JCOL ), LDH, ONE, WH, LDWH )
580
581 CALL DLACPY( 'ALL', J2, JLEN, H( INCOL+1, JCOL ), LDH,
582 WH( I2+1, 1 ), LDWH )
583
584 CALL DTRMM( 'L', 'L', 'C', 'N', J2, JLEN, ONE, U( 1, I2+1
585 ), LDU, WH( I2+1, 1 ), LDWH )
586
587 CALL DGEMM( 'C', 'N', I4-I2, JLEN, J4-J2, ONE, U( J2+1,
588 I2+1 ), LDU, H( INCOL+1+J2, JCOL ), LDH, ONE, WH(
589 I2+1, 1 ), LDWH )
590
591 CALL DLACPY( 'ALL', KDU, JLEN, WH, LDWH, H( INCOL+1, JCOL
592 ), LDH )
593
594 190 CONTINUE
595
596 DO 200 JROW = JTOP, MAX( INCOL, KTOP ) - 1, NV
597
598 JLEN = MIN( NV, MAX( INCOL, KTOP )-JROW )
599
600 CALL DLACPY( 'ALL', JLEN, KNZ, H( JROW, INCOL+1+J2 ),
601 LDH, WV( 1, 1+KZS ), LDWV )
602
603 CALL DLASET( 'ALL', JLEN, KZS, ZERO, ZERO, WV, LDWV )
604
605 CALL DTRMM( 'R', 'U', 'N', 'N', JLEN, KNZ, ONE, U( J2+1,
606 1+KZS ), LDU, WV( 1, 1+KZS ), LDWV )
607
608 CALL DGEMM( 'N', 'N', JLEN, I2, J2, ONE, H( JROW, INCOL+1
609 ), LDH, U, LDU, ONE, WV, LDWV )
610
611 CALL DLACPY( 'ALL', JLEN, J2, H( JROW, INCOL+1 ), LDH,
612 WV( 1, 1+I2 ), LDWV )
613
614 CALL DTRMM( 'R', 'L', 'N', 'N', JLEN, I4-I2, ONE, U( 1,
615 I2+1 ), LDU, WV( 1, 1+I2 ), LDWV )
616
617 CALL DGEMM( 'N', 'N', JLEN, I4-I2, J4-J2, ONE, H( JROW,
618 INCOL+1+J2 ), LDH, U( J2+1, I2+1 ), LDU, ONE, WV( 1,
619 1+I2 ), LDWV )
620
621 CALL DLACPY( 'ALL', JLEN, KDU, WV, LDWV, H( JROW, INCOL+1
622 ), LDH )
623
624 200 CONTINUE
625
626 IF( WANTZ ) THEN
627
628 DO 210 JROW = ILOZ, IHIZ, NV
629
630 JLEN = MIN( NV, IHIZ-JROW+1 )
631
632 CALL DLACPY( 'ALL', JLEN, KNZ, Z( JROW, INCOL+1+J2 ),
633 LDZ, WV( 1, 1+KZS ), LDWV )
634
635 CALL DLASET( 'ALL', JLEN, KZS, ZERO, ZERO, WV, LDWV )
636
637 CALL DTRMM( 'R', 'U', 'N', 'N', JLEN, KNZ, ONE, U( J2+1,
638 1+KZS ), LDU, WV( 1, 1+KZS ), LDWV )
639
640 CALL DGEMM( 'N', 'N', JLEN, I2, J2, ONE, Z( JROW, INCOL+1
641 ), LDZ, U, LDU, ONE, WV, LDWV )
642
643 CALL DLACPY( 'ALL', JLEN, J2, Z( JROW, INCOL+1 ), LDZ,
644 WV( 1, 1+I2 ), LDWV )
645
646 CALL DTRMM( 'R', 'L', 'N', 'N', JLEN, I4-I2, ONE, U( 1,
647 I2+1 ), LDU, WV( 1, 1+I2 ), LDWV )
648
649 CALL DGEMM( 'N', 'N', JLEN, I4-I2, J4-J2, ONE, Z( JROW,
650 INCOL+1+J2 ), LDZ, U( J2+1, I2+1 ), LDU, ONE, WV( 1,
651 1+I2 ), LDWV )
652
653 CALL DLACPY( 'ALL', JLEN, KDU, WV, LDWV, Z( JROW, INCOL+1
654 ), LDZ )
655
656 210 CONTINUE
657
658 END IF
659
660 END IF
661
662 END IF
663
664 220 CONTINUE
665
666 END
667
669 LAPACK auxiliary routine (versionNo3v.e1m)ber 2006 DLAQR5(1)