@@ -298,6 +298,7 @@ reorderMatrix(
298
298
}
299
299
}
300
300
301
+
301
302
template <typename T>
302
303
static void
303
304
compareMatrices (
@@ -315,207 +316,41 @@ compareMatrices(
315
316
316
317
if ( lda > 0 ) // General case
317
318
{
318
- for (m = 0 ; m < M; m++) {
319
- for (n = 0 ; n < N; n++) {
320
- a = getElement<T>(order, clblasNoTrans, m, n, A, lda);
321
- b = getElement<T>(order, clblasNoTrans, m, n, B, lda);
322
- delta = 0.0 ;
323
- if (absDelta != NULL ) {
324
- delta = absDelta[m * N + n];
319
+ for (m = 0 ; m < M; m++) {
320
+ for (n = 0 ; n < N; n++) {
321
+ a = getElement<T>(order, clblasNoTrans, m, n, A, lda);
322
+ b = getElement<T>(order, clblasNoTrans, m, n, B, lda);
323
+ gtestAssertElementsEqual (a, b);
325
324
}
326
- if ( module (a-b) > delta ) printf (" m : %d\t n: %d\n " , (int )m, (int )n);
327
- ASSERT_NEAR (a, b, delta);
328
325
}
329
326
}
330
- }
331
327
else // Packed case
332
328
{
333
- if ( order == clblasColumnMajor)
334
- {
335
- for ( n = 0 ; n < N; n++)
336
- {
337
- for ( m=n; m < M; m++)
338
- {
339
- a = getElement<T>(order, clblasNoTrans, m, n, A, lda);
340
- b = getElement<T>(order, clblasNoTrans, m, n, B, lda);
341
- delta = 0.0 ;
342
- if (absDelta != NULL ) {
343
- // delta = absDelta[m * N + n];
344
- }
345
- if ( module (a-b) > delta ) printf (" m : %d\t n: %d\n " , (int )m, (int )n);
346
- ASSERT_NEAR (a, b, delta);
347
- }
348
- }
349
- }
350
- else
351
- {
352
- for ( m = 0 ; m < M; m++)
353
- {
354
- for ( n = 0 ; n <= m; n++)
355
- {
356
- a = getElement<T>(order, clblasNoTrans, m, n, A, lda);
357
- b = getElement<T>(order, clblasNoTrans, m, n, B, lda);
358
- delta = 0.0 ;
359
- if (absDelta != NULL ) {
360
- // delta = absDelta[m * N + n];
361
- }
362
- if ( module (a-b) > delta ) printf (" m : %d\t n: %d\n " , (int )m, (int )n);
363
- ASSERT_NEAR (a, b, delta);
364
- }
365
- }
366
- }
367
- }
368
- }
369
-
370
- template <>
371
- __template_static void
372
- compareMatrices<FloatComplex>(
373
- clblasOrder order,
374
- size_t M,
375
- size_t N,
376
- const FloatComplex *A,
377
- const FloatComplex *B,
378
- size_t lda,
379
- const cl_double *absDelta)
380
- {
381
- size_t m = 0 , n = 0 ;
382
- FloatComplex a, b;
383
- cl_double delta;
384
-
385
- if ( lda > 0 )
386
- {
387
- for (m = 0 ; m < M; m++) {
388
- for (n = 0 ; n < N; n++) {
389
- a = getElement<FloatComplex>(order, clblasNoTrans, m, n, A, lda);
390
- b = getElement<FloatComplex>(order, clblasNoTrans, m, n, B, lda);
391
- delta = 0.0 ;
392
- if (absDelta != NULL ) {
393
- delta = absDelta[m * N + n];
329
+ if ( order == clblasColumnMajor)
330
+ {
331
+ for ( n = 0 ; n < N; n++)
332
+ {
333
+ for ( m=n; m < M; m++)
334
+ {
335
+ a = getElement<T>(order, clblasNoTrans, m, n, A, lda);
336
+ b = getElement<T>(order, clblasNoTrans, m, n, B, lda);
337
+ gtestAssertElementsEqual (a, b);
338
+ }
394
339
}
395
- if ( (module (CREAL (a) - CREAL (b)) > delta) || (module (CIMAG (a) - CIMAG (b)) > delta) )
396
- printf (" m : %d\t n: %d\n " , (int )m, (int )n);
397
- ASSERT_NEAR (CREAL (a), CREAL (b), delta);
398
- ASSERT_NEAR (CIMAG (a), CIMAG (b), delta);
399
340
}
400
- }
401
- }
402
- else // Packed case
403
- {
404
- if ( order == clblasColumnMajor)
405
- {
406
- for ( n = 0 ; n < N; n++)
407
- {
408
- for ( m=n; m < M; m++)
409
- {
410
- a = getElement<FloatComplex>(order, clblasNoTrans, m, n, A, lda);
411
- b = getElement<FloatComplex>(order, clblasNoTrans, m, n, B, lda);
412
- delta = 0.0 ;
413
- if (absDelta != NULL ) {
414
- // delta = absDelta[m * N + n];
415
- }
416
- if ( (module (CREAL (a) - CREAL (b)) > delta) || (module (CIMAG (a) - CIMAG (b)) > delta) )
417
- printf (" m : %d\t n: %d\n " , (int )m, (int )n);
418
- ASSERT_NEAR (CREAL (a), CREAL (b), delta);
419
- ASSERT_NEAR (CIMAG (a), CIMAG (b), delta);
420
- }
421
- }
422
- }
423
- else
424
- {
425
- for ( m = 0 ; m < M; m++)
426
- {
427
- for ( n = 0 ; n <= m; n++)
428
- {
429
- a = getElement<FloatComplex>(order, clblasNoTrans, m, n, A, lda);
430
- b = getElement<FloatComplex>(order, clblasNoTrans, m, n, B, lda);
431
- delta = 0.0 ;
432
- if (absDelta != NULL ) {
433
- // delta = absDelta[m * N + n];
434
- }
435
- if ( (module (CREAL (a) - CREAL (b)) > delta) || (module (CIMAG (a) - CIMAG (b)) > delta) )
436
- printf (" m : %d\t n: %d\n " , (int )m, (int )n);
437
- ASSERT_NEAR (CREAL (a), CREAL (b), delta);
438
- ASSERT_NEAR (CIMAG (a), CIMAG (b), delta);
439
- }
440
- }
441
- }
442
- }
443
-
444
- }
445
-
446
- template <>
447
- __template_static void
448
- compareMatrices<DoubleComplex>(
449
- clblasOrder order,
450
- size_t M,
451
- size_t N,
452
- const DoubleComplex *A,
453
- const DoubleComplex *B,
454
- size_t lda,
455
- const cl_double *absDelta)
456
- {
457
- size_t m = 0 , n = 0 ;
458
- DoubleComplex a, b;
459
- cl_double delta;
460
- if ( lda > 0 )
461
- {
462
- for (m = 0 ; m < M; m++) {
463
- for (n = 0 ; n < N; n++) {
464
- a = getElement<DoubleComplex>(order, clblasNoTrans, m, n, A, lda);
465
- b = getElement<DoubleComplex>(order, clblasNoTrans, m, n, B, lda);
466
- delta = 0.0 ;
467
- if (absDelta != NULL ) {
468
- delta = absDelta[m * N + n];
341
+ else
342
+ {
343
+ for ( m = 0 ; m < M; m++)
344
+ {
345
+ for ( n = 0 ; n <= m; n++)
346
+ {
347
+ a = getElement<T>(order, clblasNoTrans, m, n, A, lda);
348
+ b = getElement<T>(order, clblasNoTrans, m, n, B, lda);
349
+ gtestAssertElementsEqual (a, b);
350
+ }
469
351
}
470
- if ( (module (CREAL (a) - CREAL (b)) > delta) || (module (CIMAG (a) - CIMAG (b)) > delta) )
471
- printf (" m : %d\t n: %d\n " , (int )m, (int )n);
472
- ASSERT_NEAR (CREAL (a), CREAL (b), delta);
473
- ASSERT_NEAR (CIMAG (a), CIMAG (b), delta);
474
352
}
475
353
}
476
- }
477
- else // Packed case
478
- {
479
- if ( order == clblasColumnMajor)
480
- {
481
- for ( n = 0 ; n < N; n++)
482
- {
483
- for ( m=n; m < M; m++)
484
- {
485
- a = getElement<DoubleComplex>(order, clblasNoTrans, m, n, A, lda);
486
- b = getElement<DoubleComplex>(order, clblasNoTrans, m, n, B, lda);
487
- delta = 0.0 ;
488
- if (absDelta != NULL ) {
489
- // delta = absDelta[m * N + n];
490
- }
491
- if ( (module (CREAL (a) - CREAL (b)) > delta) || (module (CIMAG (a) - CIMAG (b)) > delta) )
492
- printf (" m : %d\t n: %d\n " , (int )m, (int )n);
493
- ASSERT_NEAR (CREAL (a), CREAL (b), delta);
494
- ASSERT_NEAR (CIMAG (a), CIMAG (b), delta);
495
- }
496
- }
497
- }
498
- else
499
- {
500
- for ( m = 0 ; m < M; m++)
501
- {
502
- for ( n = 0 ; n <= m; n++)
503
- {
504
- a = getElement<DoubleComplex>(order, clblasNoTrans, m, n, A, lda);
505
- b = getElement<DoubleComplex>(order, clblasNoTrans, m, n, B, lda);
506
- delta = 0.0 ;
507
- if (absDelta != NULL ) {
508
- // delta = absDelta[m * N + n];
509
- }
510
- if ( (module (CREAL (a) - CREAL (b)) > delta) || (module (CIMAG (a) - CIMAG (b)) > delta) )
511
- printf (" m : %d\t n: %d\n " , (int )m, (int )n);
512
- ASSERT_NEAR (CREAL (a), CREAL (b), delta);
513
- ASSERT_NEAR (CIMAG (a), CIMAG (b), delta);
514
- }
515
- }
516
- }
517
- }
518
-
519
354
}
520
355
521
356
template <typename T>
0 commit comments