You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_zscal.c 3.4 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #include "openblas_utest.h"
  2. #include <cblas.h>
  3. #ifdef BUILD_COMPLEX16
  4. #ifndef NAN
  5. #define NAN 0.0/0.0
  6. #endif
  7. #ifndef INFINITY
  8. #define INFINITY 1.0/0.0
  9. #endif
  10. CTEST(zscal, i_nan)
  11. {
  12. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  13. double nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
  14. BLASFUNC(zscal)(9, i, nan, 1);
  15. ASSERT_TRUE(isnan(nan[0]));
  16. ASSERT_TRUE(isnan(nan[1]));
  17. ASSERT_TRUE(isnan(nan[16]));
  18. ASSERT_TRUE(isnan(nan[17]));
  19. }
  20. CTEST(zscal, i_nan_inc_2)
  21. {
  22. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  23. double nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0,
  24. NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
  25. BLASFUNC(zscal)(9, i, nan, 2);
  26. ASSERT_TRUE(isnan(nan[0]));
  27. ASSERT_TRUE(isnan(nan[1]));
  28. ASSERT_TRUE(isnan(nan[16]));
  29. ASSERT_TRUE(isnan(nan[17]));
  30. }
  31. CTEST(zscal, nan_i)
  32. {
  33. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  34. double nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
  35. BLASFUNC(zscal)(9, nan, i, 1);
  36. ASSERT_TRUE(isnan(i[0]));
  37. ASSERT_TRUE(isnan(i[1]));
  38. ASSERT_TRUE(isnan(i[16]));
  39. ASSERT_TRUE(isnan(i[17]));
  40. }
  41. CTEST(zscal, nan_i_inc_2)
  42. {
  43. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1,
  44. 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  45. double nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
  46. BLASFUNC(zscal)(9, nan, i, 2);
  47. ASSERT_TRUE(isnan(i[0]));
  48. ASSERT_TRUE(isnan(i[1]));
  49. ASSERT_TRUE(isnan(i[16]));
  50. ASSERT_TRUE(isnan(i[17]));
  51. }
  52. CTEST(zscal, i_inf)
  53. {
  54. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  55. double inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0};
  56. BLASFUNC(zscal)(9, i, inf, 1);
  57. ASSERT_TRUE(isnan(inf[0]));
  58. ASSERT_TRUE(isinf(inf[1]));
  59. ASSERT_TRUE(isnan(inf[16]));
  60. ASSERT_TRUE(isinf(inf[17]));
  61. }
  62. CTEST(zscal, i_inf_inc_2)
  63. {
  64. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  65. double inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0,
  66. INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0};
  67. BLASFUNC(zscal)(9, i, inf, 2);
  68. ASSERT_TRUE(isnan(inf[0]));
  69. ASSERT_TRUE(isinf(inf[1]));
  70. ASSERT_TRUE(isnan(inf[16]));
  71. ASSERT_TRUE(isinf(inf[17]));
  72. }
  73. CTEST(zscal, inf_i)
  74. {
  75. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  76. double inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0};
  77. BLASFUNC(zscal)(9, inf, i, 1);
  78. ASSERT_TRUE(isnan(i[0]));
  79. ASSERT_TRUE(isinf(i[1]));
  80. ASSERT_TRUE(isnan(i[16]));
  81. ASSERT_TRUE(isinf(i[17]));
  82. }
  83. CTEST(zscal, inf_i_inc_2)
  84. {
  85. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1,
  86. 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  87. double inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0};
  88. BLASFUNC(zscal)(9, inf, i, 2);
  89. ASSERT_TRUE(isnan(i[0]));
  90. ASSERT_TRUE(isinf(i[1]));
  91. ASSERT_TRUE(isnan(i[16]));
  92. ASSERT_TRUE(isinf(i[17]));
  93. }
  94. #endif