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 17 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591
  1. #include "openblas_utest.h"
  2. #include <cblas.h>
  3. #ifdef BUILD_SINGLE
  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(sscal, 0_nan)
  11. {
  12. blasint N=9;
  13. blasint incX=1;
  14. float i = 0.0;
  15. float x[] = {NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN};
  16. BLASFUNC(sscal)(&N, &i, x, &incX);
  17. ASSERT_TRUE(isnan(x[0]));
  18. ASSERT_TRUE(isnan(x[8]));
  19. }
  20. CTEST(sscal, 0_nan_inc_2)
  21. {
  22. blasint N=9;
  23. blasint incX=2;
  24. float i = 0.0;
  25. float x[] = {NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN,
  26. NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN};
  27. BLASFUNC(sscal)(&N, &i, x, &incX);
  28. ASSERT_TRUE(isnan(x[0]));
  29. ASSERT_TRUE(isnan(x[8]));
  30. }
  31. CTEST(sscal, nan_0)
  32. {
  33. blasint N=9;
  34. blasint incX=1;
  35. float i = NAN;
  36. float x[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
  37. BLASFUNC(sscal)(&N, &i, x, &incX);
  38. ASSERT_TRUE(isnan(x[0]));
  39. ASSERT_TRUE(isnan(x[8]));
  40. }
  41. CTEST(sscal, nan_0_inc_2)
  42. {
  43. blasint N=9;
  44. blasint incX=2;
  45. float i = NAN;
  46. float x[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  47. 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
  48. BLASFUNC(sscal)(&N, &i, x, &incX);
  49. ASSERT_TRUE(isnan(x[0]));
  50. ASSERT_TRUE(isnan(x[8]));
  51. }
  52. CTEST(sscal, 0_inf)
  53. {
  54. blasint N=9;
  55. blasint incX=1;
  56. float i = 0.0;
  57. float x[] = {INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY};
  58. BLASFUNC(sscal)(&N, &i, x, &incX);
  59. ASSERT_TRUE(isnan(x[0]));
  60. ASSERT_TRUE(isnan(x[8]));
  61. }
  62. CTEST(sscal, 0_inf_inc_2)
  63. {
  64. blasint N=9;
  65. blasint incX=2;
  66. float i = 0.0;
  67. float x[] = {INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY,
  68. INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY};
  69. BLASFUNC(sscal)(&N, &i, x, &incX);
  70. ASSERT_TRUE(isnan(x[0]));
  71. ASSERT_TRUE(isnan(x[8]));
  72. }
  73. CTEST(sscal, inf_0)
  74. {
  75. blasint N=9;
  76. blasint incX=1;
  77. float i = INFINITY;
  78. float x[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
  79. BLASFUNC(sscal)(&N, &i, x, &incX);
  80. ASSERT_TRUE(isnan(x[0]));
  81. ASSERT_TRUE(isnan(x[8]));
  82. }
  83. CTEST(sscal, inf_0_inc_2)
  84. {
  85. blasint N=9;
  86. blasint incX=2;
  87. float i = INFINITY;
  88. float x[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  89. 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
  90. BLASFUNC(sscal)(&N, &i, x, &incX);
  91. ASSERT_TRUE(isnan(x[0]));
  92. ASSERT_TRUE(isnan(x[8]));
  93. }
  94. CTEST(sscal, nan_inf)
  95. {
  96. blasint N=9;
  97. blasint incX=1;
  98. float i = NAN;
  99. float x[] = {INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY};
  100. BLASFUNC(sscal)(&N, &i, x, &incX);
  101. ASSERT_TRUE(isnan(x[0]));
  102. ASSERT_TRUE(isnan(x[8]));
  103. }
  104. CTEST(sscal, nan_inf_inc_2)
  105. {
  106. blasint N=9;
  107. blasint incX=2;
  108. float i = NAN;
  109. float x[] = {INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY,
  110. INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY};
  111. BLASFUNC(sscal)(&N, &i, x, &incX);
  112. ASSERT_TRUE(isnan(x[0]));
  113. ASSERT_TRUE(isnan(x[8]));
  114. }
  115. CTEST(sscal, inf_nan)
  116. {
  117. blasint N=9;
  118. blasint incX=1;
  119. float i = INFINITY;
  120. float x[] = {NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN};
  121. BLASFUNC(sscal)(&N, &i, x, &incX);
  122. ASSERT_TRUE(isnan(x[0]));
  123. ASSERT_TRUE(isnan(x[8]));
  124. }
  125. CTEST(sscal, inf_nan_inc_2)
  126. {
  127. blasint N=9;
  128. blasint incX=2;
  129. float i = INFINITY;
  130. float x[] = {NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN,
  131. NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN};
  132. BLASFUNC(sscal)(&N, &i, x, &incX);
  133. ASSERT_TRUE(isnan(x[0]));
  134. ASSERT_TRUE(isnan(x[8]));
  135. }
  136. #endif
  137. #ifdef BUILD_DOUBLE
  138. #ifndef NAN
  139. #define NAN 0.0/0.0
  140. #endif
  141. #ifndef INFINITY
  142. #define INFINITY 1.0/0.0
  143. #endif
  144. CTEST(dscal, 0_nan)
  145. {
  146. blasint N=9;
  147. blasint incX=1;
  148. double i = 0.0;
  149. double x[] = {NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN};
  150. BLASFUNC(dscal)(&N, &i, x, &incX);
  151. ASSERT_TRUE(isnan(x[0]));
  152. ASSERT_TRUE(isnan(x[8]));
  153. }
  154. CTEST(dscal, 0_nan_inc_2)
  155. {
  156. blasint N=9;
  157. blasint incX=2;
  158. double i = 0.0;
  159. double x[] = {NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN,
  160. NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN};
  161. BLASFUNC(dscal)(&N, &i, x, &incX);
  162. ASSERT_TRUE(isnan(x[0]));
  163. ASSERT_TRUE(isnan(x[8]));
  164. }
  165. CTEST(dscal, nan_0)
  166. {
  167. blasint N=9;
  168. blasint incX=1;
  169. double i = NAN;
  170. double x[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
  171. BLASFUNC(dscal)(&N, &i, x, &incX);
  172. ASSERT_TRUE(isnan(x[0]));
  173. ASSERT_TRUE(isnan(x[8]));
  174. }
  175. CTEST(dscal, nan_0_inc_2)
  176. {
  177. blasint N=9;
  178. blasint incX=2;
  179. double i = NAN;
  180. double x[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  181. 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
  182. BLASFUNC(dscal)(&N, &i, x, &incX);
  183. ASSERT_TRUE(isnan(x[0]));
  184. ASSERT_TRUE(isnan(x[8]));
  185. }
  186. CTEST(dscal, 0_inf)
  187. {
  188. blasint N=9;
  189. blasint incX=1;
  190. double i = 0.0;
  191. double x[] = {INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY};
  192. BLASFUNC(dscal)(&N, &i, x, &incX);
  193. ASSERT_TRUE(isnan(x[0]));
  194. ASSERT_TRUE(isnan(x[8]));
  195. }
  196. CTEST(dscal, 0_inf_inc_2)
  197. {
  198. blasint N=9;
  199. blasint incX=2;
  200. double i = 0.0;
  201. double x[] = {INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY,
  202. INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY};
  203. BLASFUNC(dscal)(&N, &i, x, &incX);
  204. ASSERT_TRUE(isnan(x[0]));
  205. ASSERT_TRUE(isnan(x[8]));
  206. }
  207. CTEST(dscal, inf_0)
  208. {
  209. blasint N=9;
  210. blasint incX=1;
  211. double i = INFINITY;
  212. double x[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
  213. BLASFUNC(dscal)(&N, &i, x, &incX);
  214. ASSERT_TRUE(isnan(x[0]));
  215. ASSERT_TRUE(isnan(x[8]));
  216. }
  217. CTEST(dscal, inf_0_inc_2)
  218. {
  219. blasint N=9;
  220. blasint incX=2;
  221. double i = INFINITY;
  222. double x[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  223. 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
  224. BLASFUNC(dscal)(&N, &i, x, &incX);
  225. ASSERT_TRUE(isnan(x[0]));
  226. ASSERT_TRUE(isnan(x[8]));
  227. }
  228. CTEST(dscal, nan_inf)
  229. {
  230. blasint N=9;
  231. blasint incX=1;
  232. double i = NAN;
  233. double x[] = {INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY};
  234. BLASFUNC(dscal)(&N, &i, x, &incX);
  235. ASSERT_TRUE(isnan(x[0]));
  236. ASSERT_TRUE(isnan(x[8]));
  237. }
  238. CTEST(dscal, nan_inf_inc_2)
  239. {
  240. blasint N=9;
  241. blasint incX=2;
  242. double i = NAN;
  243. double x[] = {INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY,
  244. INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY, INFINITY};
  245. BLASFUNC(dscal)(&N, &i, x, &incX);
  246. ASSERT_TRUE(isnan(x[0]));
  247. ASSERT_TRUE(isnan(x[8]));
  248. }
  249. CTEST(dscal, inf_nan)
  250. {
  251. blasint N=9;
  252. blasint incX=1;
  253. double i = INFINITY;
  254. double x[] = {NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN};
  255. BLASFUNC(dscal)(&N, &i, x, &incX);
  256. ASSERT_TRUE(isnan(x[0]));
  257. ASSERT_TRUE(isnan(x[8]));
  258. }
  259. CTEST(dscal, inf_nan_inc_2)
  260. {
  261. blasint N=9;
  262. blasint incX=2;
  263. double i = INFINITY;
  264. double x[] = {NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN,
  265. NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN};
  266. BLASFUNC(dscal)(&N, &i, x, &incX);
  267. ASSERT_TRUE(isnan(x[0]));
  268. ASSERT_TRUE(isnan(x[8]));
  269. }
  270. #endif
  271. #ifdef BUILD_COMPLEX
  272. #ifndef NAN
  273. #define NAN 0.0/0.0
  274. #endif
  275. #ifndef INFINITY
  276. #define INFINITY 1.0/0.0
  277. #endif
  278. CTEST(cscal, i_nan)
  279. {
  280. blasint N=9;
  281. blasint incX=1;
  282. float i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  283. float nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
  284. BLASFUNC(cscal)(&N, i, nan, &incX);
  285. ASSERT_TRUE(isnan(nan[0]));
  286. ASSERT_TRUE(isnan(nan[1]));
  287. ASSERT_TRUE(isnan(nan[16]));
  288. ASSERT_TRUE(isnan(nan[17]));
  289. }
  290. CTEST(cscal, i_nan_inc_2)
  291. {
  292. blasint N=9;
  293. blasint incX=2;
  294. float i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  295. float nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0,
  296. NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
  297. BLASFUNC(cscal)(&N, i, nan, &incX);
  298. ASSERT_TRUE(isnan(nan[0]));
  299. ASSERT_TRUE(isnan(nan[1]));
  300. ASSERT_TRUE(isnan(nan[16]));
  301. ASSERT_TRUE(isnan(nan[17]));
  302. }
  303. CTEST(cscal, nan_i)
  304. {
  305. blasint N=9;
  306. blasint incX=1;
  307. float i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  308. float nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
  309. BLASFUNC(cscal)(&N, nan, i, &incX);
  310. ASSERT_TRUE(isnan(i[0]));
  311. ASSERT_TRUE(isnan(i[1]));
  312. ASSERT_TRUE(isnan(i[16]));
  313. ASSERT_TRUE(isnan(i[17]));
  314. }
  315. CTEST(cscal, nan_i_inc_2)
  316. {
  317. blasint N=9;
  318. blasint incX=2;
  319. float i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1,
  320. 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  321. float nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
  322. BLASFUNC(cscal)(&N, nan, i, &incX);
  323. ASSERT_TRUE(isnan(i[0]));
  324. ASSERT_TRUE(isnan(i[1]));
  325. ASSERT_TRUE(isnan(i[16]));
  326. ASSERT_TRUE(isnan(i[17]));
  327. }
  328. CTEST(cscal, i_inf)
  329. {
  330. blasint N=9;
  331. blasint incX=1;
  332. float i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  333. float inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0};
  334. BLASFUNC(cscal)(&N, i, inf, &incX);
  335. ASSERT_TRUE(isnan(inf[0]));
  336. ASSERT_TRUE(isinf(inf[1]));
  337. ASSERT_TRUE(isnan(inf[16]));
  338. ASSERT_TRUE(isinf(inf[17]));
  339. }
  340. CTEST(cscal, i_inf_inc_2)
  341. {
  342. blasint N=9;
  343. blasint incX=2;
  344. float i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  345. float inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0,
  346. INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0};
  347. BLASFUNC(cscal)(&N, i, inf, &incX);
  348. ASSERT_TRUE(isnan(inf[0]));
  349. ASSERT_TRUE(isinf(inf[1]));
  350. ASSERT_TRUE(isnan(inf[16]));
  351. ASSERT_TRUE(isinf(inf[17]));
  352. }
  353. CTEST(cscal, inf_i)
  354. {
  355. blasint N=9;
  356. blasint incX=1;
  357. float i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  358. float inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0};
  359. BLASFUNC(cscal)(&N, inf, i, &incX);
  360. ASSERT_TRUE(isnan(i[0]));
  361. ASSERT_TRUE(isinf(i[1]));
  362. ASSERT_TRUE(isnan(i[16]));
  363. ASSERT_TRUE(isinf(i[17]));
  364. }
  365. CTEST(cscal, inf_i_inc_2)
  366. {
  367. blasint N=9;
  368. blasint incX=2;
  369. float i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1,
  370. 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  371. float inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0};
  372. BLASFUNC(cscal)(&N, inf, i, &incX);
  373. ASSERT_TRUE(isnan(i[0]));
  374. ASSERT_TRUE(isinf(i[1]));
  375. ASSERT_TRUE(isnan(i[16]));
  376. ASSERT_TRUE(isinf(i[17]));
  377. }
  378. CTEST(cscal, i_0inf)
  379. {
  380. blasint N=9;
  381. blasint incX=1;
  382. float i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  383. float inf[] = {0,INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY};
  384. BLASFUNC(cscal)(&N, i, inf, &incX);
  385. ASSERT_TRUE(isinf(inf[0]));
  386. ASSERT_TRUE(isnan(inf[1]));
  387. ASSERT_TRUE(isinf(inf[16]));
  388. ASSERT_TRUE(isnan(inf[17]));
  389. }
  390. CTEST(cscal, i_0inf_inc_2)
  391. {
  392. blasint N=9;
  393. blasint incX=2;
  394. float i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  395. float inf[] = {0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY,
  396. 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY};
  397. BLASFUNC(cscal)(&N, i, inf, &incX);
  398. ASSERT_TRUE(isinf(inf[0]));
  399. ASSERT_TRUE(isnan(inf[1]));
  400. ASSERT_TRUE(isinf(inf[16]));
  401. ASSERT_TRUE(isnan(inf[17]));
  402. }
  403. #endif
  404. #ifdef BUILD_COMPLEX16
  405. #ifndef NAN
  406. #define NAN 0.0/0.0
  407. #endif
  408. #ifndef INFINITY
  409. #define INFINITY 1.0/0.0
  410. #endif
  411. CTEST(zscal, i_nan)
  412. {
  413. blasint N=9;
  414. blasint incX=1;
  415. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  416. double nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
  417. BLASFUNC(zscal)(&N, i, nan, &incX);
  418. ASSERT_TRUE(isnan(nan[0]));
  419. ASSERT_TRUE(isnan(nan[1]));
  420. ASSERT_TRUE(isnan(nan[16]));
  421. ASSERT_TRUE(isnan(nan[17]));
  422. }
  423. CTEST(zscal, i_nan_inc_2)
  424. {
  425. blasint N=9;
  426. blasint incX=2;
  427. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  428. double nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0,
  429. NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
  430. BLASFUNC(zscal)(&N, i, nan, &incX);
  431. ASSERT_TRUE(isnan(nan[0]));
  432. ASSERT_TRUE(isnan(nan[1]));
  433. ASSERT_TRUE(isnan(nan[16]));
  434. ASSERT_TRUE(isnan(nan[17]));
  435. }
  436. CTEST(zscal, nan_i)
  437. {
  438. blasint N=9;
  439. blasint incX=1;
  440. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  441. double nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
  442. BLASFUNC(zscal)(&N, nan, i, &incX);
  443. ASSERT_TRUE(isnan(i[0]));
  444. ASSERT_TRUE(isnan(i[1]));
  445. ASSERT_TRUE(isnan(i[16]));
  446. ASSERT_TRUE(isnan(i[17]));
  447. }
  448. CTEST(zscal, nan_i_inc_2)
  449. {
  450. blasint N=9;
  451. blasint incX=2;
  452. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1,
  453. 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  454. double nan[] = {NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0, NAN,0};
  455. BLASFUNC(zscal)(&N, nan, i, &incX);
  456. ASSERT_TRUE(isnan(i[0]));
  457. ASSERT_TRUE(isnan(i[1]));
  458. ASSERT_TRUE(isnan(i[16]));
  459. ASSERT_TRUE(isnan(i[17]));
  460. }
  461. CTEST(zscal, i_inf)
  462. {
  463. blasint N=9;
  464. blasint incX=1;
  465. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  466. double inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0};
  467. BLASFUNC(zscal)(&N, i, inf, &incX);
  468. ASSERT_TRUE(isnan(inf[0]));
  469. ASSERT_TRUE(isinf(inf[1]));
  470. ASSERT_TRUE(isnan(inf[16]));
  471. ASSERT_TRUE(isinf(inf[17]));
  472. }
  473. CTEST(zscal, i_inf_inc_2)
  474. {
  475. blasint N=9;
  476. blasint incX=2;
  477. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  478. double inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0,
  479. INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0};
  480. BLASFUNC(zscal)(&N, i, inf, &incX);
  481. ASSERT_TRUE(isnan(inf[0]));
  482. ASSERT_TRUE(isinf(inf[1]));
  483. ASSERT_TRUE(isnan(inf[16]));
  484. ASSERT_TRUE(isinf(inf[17]));
  485. }
  486. CTEST(zscal, inf_i)
  487. {
  488. blasint N=9;
  489. blasint incX=1;
  490. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  491. double inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0};
  492. BLASFUNC(zscal)(&N, inf, i, &incX);
  493. ASSERT_TRUE(isnan(i[0]));
  494. ASSERT_TRUE(isinf(i[1]));
  495. ASSERT_TRUE(isnan(i[16]));
  496. ASSERT_TRUE(isinf(i[17]));
  497. }
  498. CTEST(zscal, inf_i_inc_2)
  499. {
  500. blasint N=9;
  501. blasint incX=2;
  502. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1,
  503. 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  504. double inf[] = {INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0};
  505. BLASFUNC(zscal)(&N, inf, i, &incX);
  506. ASSERT_TRUE(isnan(i[0]));
  507. ASSERT_TRUE(isinf(i[1]));
  508. ASSERT_TRUE(isnan(i[16]));
  509. ASSERT_TRUE(isinf(i[17]));
  510. }
  511. CTEST(zscal, i_0inf)
  512. {
  513. blasint N=9;
  514. blasint incX=1;
  515. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  516. double inf[] = {0,INFINITY, 0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY,0, INFINITY};
  517. BLASFUNC(zscal)(&N, i, inf, &incX);
  518. ASSERT_TRUE(isinf(inf[0]));
  519. ASSERT_TRUE(isnan(inf[1]));
  520. ASSERT_TRUE(isinf(inf[16]));
  521. ASSERT_TRUE(isnan(inf[17]));
  522. }
  523. CTEST(zscal, i_0inf_inc_2)
  524. {
  525. blasint N=9;
  526. blasint incX=2;
  527. double i[] = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1 };
  528. double inf[] = {0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY,
  529. 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY, 0,INFINITY};
  530. BLASFUNC(zscal)(&N, i, inf, &incX);
  531. ASSERT_TRUE(isinf(inf[0]));
  532. ASSERT_TRUE(isnan(inf[1]));
  533. ASSERT_TRUE(isinf(inf[16]));
  534. ASSERT_TRUE(isnan(inf[17]));
  535. }
  536. #endif