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_crop_1.cpp 17 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. // Tencent is pleased to support the open source community by making ncnn available.
  2. //
  3. // Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
  4. //
  5. // Licensed under the BSD 3-Clause License (the "License"); you may not use this file except
  6. // in compliance with the License. You may obtain a copy of the License at
  7. //
  8. // https://opensource.org/licenses/BSD-3-Clause
  9. //
  10. // Unless required by applicable law or agreed to in writing, software distributed
  11. // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
  12. // CONDITIONS OF ANY KIND, either express or implied. See the License for the
  13. // specific language governing permissions and limitations under the License.
  14. #include "testutil.h"
  15. static std::vector<int> IntArray(int a0)
  16. {
  17. std::vector<int> m(1);
  18. m[0] = a0;
  19. return m;
  20. }
  21. static std::vector<int> IntArray(int a0, int a1)
  22. {
  23. std::vector<int> m(2);
  24. m[0] = a0;
  25. m[1] = a1;
  26. return m;
  27. }
  28. static std::vector<int> IntArray(int a0, int a1, int a2)
  29. {
  30. std::vector<int> m(3);
  31. m[0] = a0;
  32. m[1] = a1;
  33. m[2] = a2;
  34. return m;
  35. }
  36. static std::vector<int> IntArray(int a0, int a1, int a2, int a3)
  37. {
  38. std::vector<int> m(4);
  39. m[0] = a0;
  40. m[1] = a1;
  41. m[2] = a2;
  42. m[3] = a3;
  43. return m;
  44. }
  45. static void print_int_array(const std::vector<int>& a)
  46. {
  47. fprintf(stderr, "[");
  48. for (size_t i = 0; i < a.size(); i++)
  49. {
  50. fprintf(stderr, " %d", a[i]);
  51. }
  52. fprintf(stderr, " ]");
  53. }
  54. static int test_crop(const ncnn::Mat& a, const std::vector<int>& starts_array, const std::vector<int>& ends_array, const std::vector<int>& axes_array)
  55. {
  56. ncnn::Mat starts(starts_array.size());
  57. {
  58. int* p = starts;
  59. for (size_t i = 0; i < starts_array.size(); i++)
  60. {
  61. p[i] = starts_array[i];
  62. }
  63. }
  64. ncnn::Mat ends(ends_array.size());
  65. {
  66. int* p = ends;
  67. for (size_t i = 0; i < ends_array.size(); i++)
  68. {
  69. p[i] = ends_array[i];
  70. }
  71. }
  72. ncnn::Mat axes(axes_array.size());
  73. {
  74. int* p = axes;
  75. for (size_t i = 0; i < axes_array.size(); i++)
  76. {
  77. p[i] = axes_array[i];
  78. }
  79. }
  80. ncnn::ParamDict pd;
  81. pd.set(9, starts); // starts
  82. pd.set(10, ends); // ends
  83. pd.set(11, axes); // axes
  84. std::vector<ncnn::Mat> weights(0);
  85. int ret = test_layer("Crop", pd, weights, a);
  86. if (ret != 0)
  87. {
  88. fprintf(stderr, "test_crop failed a.dims=%d a=(%d %d %d %d)", a.dims, a.w, a.h, a.d, a.c);
  89. fprintf(stderr, " starts=");
  90. print_int_array(starts_array);
  91. fprintf(stderr, " ends=");
  92. print_int_array(ends_array);
  93. fprintf(stderr, " axes=");
  94. print_int_array(axes_array);
  95. fprintf(stderr, "\n");
  96. }
  97. return ret;
  98. }
  99. static int test_crop_1d(const ncnn::Mat& a)
  100. {
  101. std::vector<int> params[][3] = {
  102. {IntArray(12), IntArray(-233), IntArray(0)},
  103. {IntArray(16), IntArray(-233), IntArray(0)},
  104. {IntArray(11), IntArray(11 + 16), IntArray(0)},
  105. {IntArray(12), IntArray(12 + 7), IntArray(-1)},
  106. {IntArray(16), IntArray(16 + 12), std::vector<int>()},
  107. {IntArray(11), IntArray(-7 + 1), IntArray(0)},
  108. {IntArray(12), IntArray(-12 + 1), IntArray(-1)},
  109. {IntArray(16), IntArray(-16 + 1), std::vector<int>()}
  110. };
  111. for (int i = 0; i < sizeof(params) / sizeof(params[0]); i++)
  112. {
  113. int ret = test_crop(a, params[i][0], params[i][1], params[i][2]);
  114. if (ret)
  115. return ret;
  116. }
  117. return 0;
  118. }
  119. static int test_crop_2d(const ncnn::Mat& a)
  120. {
  121. std::vector<int> params[][3] = {
  122. {IntArray(12), IntArray(-233), IntArray(0)},
  123. {IntArray(8), IntArray(-233), IntArray(0)},
  124. {IntArray(4), IntArray(-233), IntArray(1)},
  125. {IntArray(5, 11), IntArray(-233, -233), IntArray(0, 1)},
  126. {IntArray(11), IntArray(11 + 16), IntArray(0)},
  127. {IntArray(12), IntArray(12 + 7), IntArray(0)},
  128. {IntArray(8), IntArray(8 + 12), IntArray(-2)},
  129. {IntArray(5), IntArray(8), IntArray(1)},
  130. {IntArray(6), IntArray(9), IntArray(1)},
  131. {IntArray(4), IntArray(12), IntArray(-1)},
  132. {IntArray(11, 5), IntArray(11 + 7, 11), IntArray(0, 1)},
  133. {IntArray(12, 6), IntArray(12 + 12, 12), IntArray(0, 1)},
  134. {IntArray(8, 4), IntArray(8 + 16, 10), IntArray(0, -1)},
  135. {IntArray(11), IntArray(-16 + 1), IntArray(0)},
  136. {IntArray(12), IntArray(-7 + 1), IntArray(0)},
  137. {IntArray(8), IntArray(-12 + 1), IntArray(-2)},
  138. {IntArray(5), IntArray(-5 + 1), IntArray(1)},
  139. {IntArray(6), IntArray(-6 + 1), IntArray(1)},
  140. {IntArray(4), IntArray(-4 + 1), IntArray(-1)},
  141. {IntArray(11, 5), IntArray(-12 + 1, -6 + 1), IntArray(0, 1)},
  142. {IntArray(12, 6), IntArray(-16 + 1, -5 + 1), IntArray(0, 1)},
  143. {IntArray(8, 4), IntArray(-7 + 1, -4 + 1), IntArray(-2, -1)}
  144. };
  145. for (int i = 0; i < sizeof(params) / sizeof(params[0]); i++)
  146. {
  147. int ret = test_crop(a, params[i][0], params[i][1], params[i][2]);
  148. if (ret)
  149. return ret;
  150. }
  151. return 0;
  152. }
  153. static int test_crop_3d(const ncnn::Mat& a)
  154. {
  155. std::vector<int> params[][3] = {
  156. {IntArray(11), IntArray(-233), IntArray(0)},
  157. {IntArray(8), IntArray(-233), IntArray(0)},
  158. {IntArray(5), IntArray(-233), IntArray(1)},
  159. {IntArray(6), IntArray(-233), IntArray(2)},
  160. {IntArray(4), IntArray(-233), IntArray(-1)},
  161. {IntArray(12, 6), IntArray(-233, -233), IntArray(0, 1)},
  162. {IntArray(11, 5), IntArray(-233, -233), IntArray(0, -1)},
  163. {IntArray(8, 4), IntArray(-233, -233), IntArray(0, 2)},
  164. {IntArray(6, 6), IntArray(-233, -233), IntArray(1, -1)},
  165. {IntArray(11, 5, 5), IntArray(-233, -233, -233), IntArray(0, 1, 2)},
  166. {IntArray(8, 4, 4), IntArray(-233, -233, -233), IntArray(0, 1, -1)},
  167. {IntArray(11), IntArray(11 + 7), IntArray(0)},
  168. {IntArray(12), IntArray(12 + 12), IntArray(0)},
  169. {IntArray(8), IntArray(8 + 16), IntArray(0)},
  170. {IntArray(5), IntArray(13), IntArray(1)},
  171. {IntArray(6), IntArray(12), IntArray(1)},
  172. {IntArray(4), IntArray(11), IntArray(-2)},
  173. {IntArray(5), IntArray(12), IntArray(2)},
  174. {IntArray(6), IntArray(11), IntArray(2)},
  175. {IntArray(4), IntArray(13), IntArray(-1)},
  176. {IntArray(11, 5), IntArray(11 + 7, 11), IntArray(0, 1)},
  177. {IntArray(12, 6), IntArray(12 + 16, 12), IntArray(0, 1)},
  178. {IntArray(8, 4), IntArray(8 + 12, 13), IntArray(0, -2)},
  179. {IntArray(11, 5), IntArray(11 + 16, 13), IntArray(0, 2)},
  180. {IntArray(12, 6), IntArray(12 + 12, 11), IntArray(0, 2)},
  181. {IntArray(8, 4), IntArray(8 + 7, 12), IntArray(0, -1)},
  182. {IntArray(5, 4), IntArray(12, 12), IntArray(1, 2)},
  183. {IntArray(6, 3), IntArray(13, 13), IntArray(1, 2)},
  184. {IntArray(4, 2), IntArray(11, 11), IntArray(-2, -1)},
  185. {IntArray(11, 5, 2), IntArray(11 + 7, 11, 11), IntArray(0, 1, 2)},
  186. {IntArray(12, 6, 4), IntArray(12 + 16, 12, 12), IntArray(0, 1, 2)},
  187. {IntArray(8, 4, 3), IntArray(8 + 12, 13, 13), IntArray(-3, -2, -1)},
  188. {IntArray(11), IntArray(-7 + 1), IntArray(0)},
  189. {IntArray(12), IntArray(-12 + 1), IntArray(0)},
  190. {IntArray(8), IntArray(-16 + 1), IntArray(-3)},
  191. {IntArray(5), IntArray(-6 + 1), IntArray(1)},
  192. {IntArray(6), IntArray(-5 + 1), IntArray(1)},
  193. {IntArray(4), IntArray(-4 + 1), IntArray(-2)},
  194. {IntArray(5), IntArray(-5 + 1), IntArray(2)},
  195. {IntArray(6), IntArray(-4 + 1), IntArray(2)},
  196. {IntArray(4), IntArray(-6 + 1), IntArray(-1)},
  197. {IntArray(11, 5), IntArray(-7 + 1, -4 + 1), IntArray(0, 1)},
  198. {IntArray(12, 6), IntArray(-12 + 1, -6 + 1), IntArray(0, 1)},
  199. {IntArray(8, 4), IntArray(-16 + 1, -5 + 1), IntArray(-3, -2)},
  200. {IntArray(11, 5), IntArray(-12 + 1, -6 + 1), IntArray(0, 2)},
  201. {IntArray(12, 6), IntArray(-16 + 1, -5 + 1), IntArray(0, 2)},
  202. {IntArray(8, 4), IntArray(-7 + 1, -4 + 1), IntArray(-3, -1)},
  203. {IntArray(5, 2), IntArray(-5 + 1, -5 + 1), IntArray(1, 2)},
  204. {IntArray(6, 4), IntArray(-4 + 1, -4 + 1), IntArray(1, 2)},
  205. {IntArray(4, 3), IntArray(-6 + 1, -6 + 1), IntArray(-2, -1)},
  206. {IntArray(11, 5, 4), IntArray(-7 + 1, -5 + 1, -5 + 1), IntArray(0, 1, 2)},
  207. {IntArray(12, 6, 3), IntArray(-12 + 1, -6 + 1, -6 + 1), IntArray(0, 1, 2)},
  208. {IntArray(8, 4, 2), IntArray(-16 + 1, -4 + 1, -4 + 1), IntArray(-3, -2, -1)}
  209. };
  210. for (int i = 0; i < sizeof(params) / sizeof(params[0]); i++)
  211. {
  212. int ret = test_crop(a, params[i][0], params[i][1], params[i][2]);
  213. if (ret)
  214. return ret;
  215. }
  216. return 0;
  217. }
  218. static int test_crop_4d(const ncnn::Mat& a)
  219. {
  220. std::vector<int> params[][3] = {
  221. {IntArray(11), IntArray(-233), IntArray(0)},
  222. {IntArray(8), IntArray(-233), IntArray(0)},
  223. {IntArray(6), IntArray(-233), IntArray(1)},
  224. {IntArray(5), IntArray(-233), IntArray(2)},
  225. {IntArray(4), IntArray(-233), IntArray(-2)},
  226. {IntArray(6), IntArray(-233), IntArray(3)},
  227. {IntArray(5), IntArray(-233), IntArray(-1)},
  228. {IntArray(8, 4), IntArray(-233, -233), IntArray(0, 1)},
  229. {IntArray(12, 6), IntArray(-233, -233), IntArray(0, 2)},
  230. {IntArray(11, 5), IntArray(-233, -233), IntArray(-4, -2)},
  231. {IntArray(4, 4), IntArray(-233, -233), IntArray(1, 2)},
  232. {IntArray(12, 6), IntArray(-233, -233), IntArray(0, 3)},
  233. {IntArray(5, 5), IntArray(-233, -233), IntArray(1, 3)},
  234. {IntArray(4, 4), IntArray(-233, -233), IntArray(2, 3)},
  235. {IntArray(12, 6, 6), IntArray(-233, -233, -233), IntArray(0, 1, 2)},
  236. {IntArray(11, 5, 5), IntArray(-233, -233, -233), IntArray(0, 1, 2)},
  237. {IntArray(8, 4, 4), IntArray(-233, -233, -233), IntArray(0, 1, 3)},
  238. {IntArray(12, 6, 6), IntArray(-233, -233, -233), IntArray(0, 2, 3)},
  239. {IntArray(11, 5, 5), IntArray(-233, -233, -233), IntArray(0, 2, 3)},
  240. {IntArray(4, 4, 4), IntArray(-233, -233, -233), IntArray(1, 2, 3)},
  241. {IntArray(6, 6, 6), IntArray(-233, -233, -233), IntArray(1, 2, 3)},
  242. {IntArray(11, 5, 5, 5), IntArray(-233, -233, -233, -233), IntArray(0, 1, 2, 3)},
  243. {IntArray(8, 4, 4, 4), IntArray(-233, -233, -233, -233), IntArray(0, 1, 2, 3)},
  244. {IntArray(12, 6, 6, 6), IntArray(-233, -233, -233, -233), IntArray(-4, -3, -2, -1)},
  245. {IntArray(11), IntArray(11 + 16), IntArray(0)},
  246. {IntArray(12), IntArray(12 + 7), IntArray(0)},
  247. {IntArray(8), IntArray(8 + 12), IntArray(-4)},
  248. {IntArray(5), IntArray(11), IntArray(1)},
  249. {IntArray(6), IntArray(13), IntArray(1)},
  250. {IntArray(4), IntArray(12), IntArray(-3)},
  251. {IntArray(3), IntArray(12), IntArray(2)},
  252. {IntArray(4), IntArray(13), IntArray(2)},
  253. {IntArray(5), IntArray(11), IntArray(-2)},
  254. {IntArray(1), IntArray(8), IntArray(3)},
  255. {IntArray(2), IntArray(7), IntArray(3)},
  256. {IntArray(3), IntArray(6), IntArray(-1)},
  257. {IntArray(11, 5), IntArray(11 + 7, 11), IntArray(0, 1)},
  258. {IntArray(12, 6), IntArray(12 + 12, 12), IntArray(0, 1)},
  259. {IntArray(8, 4), IntArray(8 + 16, 13), IntArray(-4, -3)},
  260. {IntArray(11, 4), IntArray(11 + 12, 13), IntArray(0, 2)},
  261. {IntArray(12, 3), IntArray(12 + 16, 11), IntArray(0, 2)},
  262. {IntArray(8, 2), IntArray(8 + 7, 12), IntArray(-4, -2)},
  263. {IntArray(11, 1), IntArray(11 + 16, 5), IntArray(0, 3)},
  264. {IntArray(12, 2), IntArray(12 + 7, 6), IntArray(0, 3)},
  265. {IntArray(8, 3), IntArray(8 + 12, 7), IntArray(-4, -1)},
  266. {IntArray(3, 3), IntArray(13, 4), IntArray(1, 2)},
  267. {IntArray(4, 2), IntArray(12, 3), IntArray(1, 2)},
  268. {IntArray(5, 1), IntArray(11, 2), IntArray(-3, -2)},
  269. {IntArray(5, 5), IntArray(11, 8), IntArray(1, 3)},
  270. {IntArray(4, 6), IntArray(12, 9), IntArray(1, 3)},
  271. {IntArray(3, 4), IntArray(13, 7), IntArray(-3, -1)},
  272. {IntArray(2, 3), IntArray(12, 9), IntArray(2, 3)},
  273. {IntArray(3, 2), IntArray(11, 7), IntArray(2, 3)},
  274. {IntArray(4, 1), IntArray(10, 8), IntArray(-2, -1)},
  275. {IntArray(11, 2, 2), IntArray(11 + 6, 9, 9), IntArray(0, 1, 2)},
  276. {IntArray(12, 3, 3), IntArray(12 + 1, 10, 10), IntArray(0, 1, 2)},
  277. {IntArray(8, 4, 4), IntArray(8 + 3, 11, 11), IntArray(-4, -3, -2)},
  278. {IntArray(11, 4, 4), IntArray(11 + 12, 12, 12), IntArray(0, 1, 3)},
  279. {IntArray(12, 5, 5), IntArray(12 + 8, 11, 11), IntArray(0, 1, 3)},
  280. {IntArray(8, 6, 6), IntArray(8 + 4, 13, 13), IntArray(-4, -3, -1)},
  281. {IntArray(11, 1, 4), IntArray(11 + 5, 12, 12), IntArray(0, 2, 3)},
  282. {IntArray(12, 3, 3), IntArray(12 + 3, 11, 11), IntArray(0, 2, 3)},
  283. {IntArray(8, 2, 5), IntArray(8 + 2, 10, 10), IntArray(-4, -2, -1)},
  284. {IntArray(1, 1, 1), IntArray(7, 7, 7), IntArray(1, 2, 3)},
  285. {IntArray(2, 2, 2), IntArray(8, 9, 10), IntArray(1, 2, 3)},
  286. {IntArray(3, 3, 3), IntArray(11, 12, 13), IntArray(-3, -2, -1)},
  287. {IntArray(11, 2, 3, 6), IntArray(11 + 11, 10, 12, 11), IntArray(0, 1, 2, 3)},
  288. {IntArray(12, 3, 4, 5), IntArray(12 + 12, 9, 11, 13), IntArray(0, 1, 2, 3)},
  289. {IntArray(8, 4, 5, 4), IntArray(8 + 8, 8, 10, 12), IntArray(-4, -3, -2, -1)},
  290. {IntArray(11), IntArray(-7 + 1), IntArray(0)},
  291. {IntArray(12), IntArray(-12 + 1), IntArray(0)},
  292. {IntArray(8), IntArray(-16 + 1), IntArray(-4)},
  293. {IntArray(5), IntArray(-6 + 1), IntArray(1)},
  294. {IntArray(6), IntArray(-5 + 1), IntArray(1)},
  295. {IntArray(4), IntArray(-4 + 1), IntArray(-3)},
  296. {IntArray(4), IntArray(-4 + 1), IntArray(2)},
  297. {IntArray(5), IntArray(-5 + 1), IntArray(2)},
  298. {IntArray(6), IntArray(-6 + 1), IntArray(-2)},
  299. {IntArray(1), IntArray(-5 + 1), IntArray(3)},
  300. {IntArray(2), IntArray(-4 + 1), IntArray(3)},
  301. {IntArray(3), IntArray(-3 + 1), IntArray(-1)},
  302. {IntArray(11, 3), IntArray(-7 + 1, -3 + 1), IntArray(0, 1)},
  303. {IntArray(12, 4), IntArray(-12 + 1, -4 + 1), IntArray(0, 1)},
  304. {IntArray(8, 5), IntArray(-16 + 1, -5 + 1), IntArray(-4, -3)},
  305. {IntArray(11, 1), IntArray(-12 + 1, -5 + 1), IntArray(0, 2)},
  306. {IntArray(12, 2), IntArray(-16 + 1, -4 + 1), IntArray(0, 2)},
  307. {IntArray(8, 3), IntArray(-7 + 1, -6 + 1), IntArray(-4, -2)},
  308. {IntArray(11, 3), IntArray(-12 + 1, -2 + 1), IntArray(0, 3)},
  309. {IntArray(12, 4), IntArray(-16 + 1, -3 + 1), IntArray(0, 3)},
  310. {IntArray(8, 5), IntArray(-7 + 1, -4 + 1), IntArray(-4, -1)},
  311. {IntArray(2, 3), IntArray(-4 + 1, -2 + 1), IntArray(1, 2)},
  312. {IntArray(3, 4), IntArray(-2 + 1, -3 + 1), IntArray(1, 2)},
  313. {IntArray(4, 5), IntArray(-3 + 1, -4 + 1), IntArray(-3, -2)},
  314. {IntArray(3, 2), IntArray(-2 + 1, -4 + 1), IntArray(1, 3)},
  315. {IntArray(4, 3), IntArray(-3 + 1, -2 + 1), IntArray(1, 3)},
  316. {IntArray(5, 4), IntArray(-4 + 1, -3 + 1), IntArray(-3, -1)},
  317. {IntArray(2, 3), IntArray(-4 + 1, -6 + 1), IntArray(2, 3)},
  318. {IntArray(1, 2), IntArray(-5 + 1, -5 + 1), IntArray(2, 3)},
  319. {IntArray(3, 1), IntArray(-6 + 1, -4 + 1), IntArray(-2, -1)},
  320. {IntArray(11, 3, 3), IntArray(-7 + 1, -3 + 1, -4 + 1), IntArray(0, 1, 2)},
  321. {IntArray(12, 4, 4), IntArray(-12 + 1, -4 + 1, -3 + 1), IntArray(0, 1, 2)},
  322. {IntArray(8, 5, 5), IntArray(-16 + 1, -5 + 1, -5 + 1), IntArray(-4, -3, -2)},
  323. {IntArray(11, 2, 2), IntArray(-7 + 1, -5 + 1, -4 + 1), IntArray(0, 1, 3)},
  324. {IntArray(12, 1, 1), IntArray(-12 + 1, -6 + 1, -5 + 1), IntArray(0, 1, 3)},
  325. {IntArray(8, 3, 3), IntArray(-16 + 1, -4 + 1, -6 + 1), IntArray(-4, -3, -1)},
  326. {IntArray(11, 2, 5), IntArray(-7 + 1, -2 + 1, -5 + 1), IntArray(0, 2, 3)},
  327. {IntArray(12, 3, 3), IntArray(-12 + 1, -3 + 1, -4 + 1), IntArray(0, 2, 3)},
  328. {IntArray(8, 4, 4), IntArray(-16 + 1, -4 + 1, -3 + 1), IntArray(-4, -2, -1)},
  329. {IntArray(1, 3, 3), IntArray(-3 + 1, -6 + 1, -4 + 1), IntArray(1, 2, 3)},
  330. {IntArray(2, 2, 2), IntArray(-4 + 1, -4 + 1, -5 + 1), IntArray(1, 2, 3)},
  331. {IntArray(3, 1, 1), IntArray(-5 + 1, -5 + 1, -6 + 1), IntArray(-3, -2, -1)},
  332. {IntArray(11, 3, 4, 4), IntArray(-7 + 1, -3 + 1, -2 + 1, -4 + 1), IntArray(0, 1, 2, 3)},
  333. {IntArray(12, 4, 5, 3), IntArray(-12 + 1, -4 + 1, -3 + 1, -5 + 1), IntArray(0, 1, 2, 3)},
  334. {IntArray(8, 5, 6, 2), IntArray(-16 + 1, -5 + 1, -4 + 1, -3 + 1), IntArray(-4, -3, -2, -1)}
  335. };
  336. for (int i = 0; i < sizeof(params) / sizeof(params[0]); i++)
  337. {
  338. int ret = test_crop(a, params[i][0], params[i][1], params[i][2]);
  339. if (ret)
  340. return ret;
  341. }
  342. return 0;
  343. }
  344. int main()
  345. {
  346. SRAND(776757);
  347. return 0
  348. || test_crop_1d(RandomMat(112))
  349. || test_crop_1d(RandomMat(126))
  350. || test_crop_1d(RandomMat(127))
  351. || test_crop_2d(RandomMat(20, 48))
  352. || test_crop_2d(RandomMat(15, 36))
  353. || test_crop_2d(RandomMat(16, 33))
  354. || test_crop_3d(RandomMat(20, 20, 48))
  355. || test_crop_3d(RandomMat(15, 15, 36))
  356. || test_crop_3d(RandomMat(16, 16, 33))
  357. || test_crop_4d(RandomMat(20, 20, 20, 48))
  358. || test_crop_4d(RandomMat(15, 15, 15, 36))
  359. || test_crop_4d(RandomMat(16, 16, 16, 33));
  360. }