Reikriam

src/cpu-kernels/reducers.cpp

Jun 3rd, 2020
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 68.44 KB | None | 0 0
  1. awkward_reduce_count_64
  2. ----------------------------------------------------
  3.  
  4. def awkward_reduce_count_64(
  5. toptr: List[int],
  6. parents: List[int],
  7. parentsoffset: int,
  8. lenparents: int,
  9. outlength: int,
  10. ):
  11. for i in range(outlength):
  12. toptr[i] = 0
  13. for i in range(lenparents):
  14. toptr[parents[parentsoffset + i]] = toptr[parents[parentsoffset + i]] + 1
  15. return
  16.  
  17.  
  18. awkward_reduce_countnonzero
  19. ----------------------------------------------------
  20.  
  21. for IN in (bool, int, float):
  22.  
  23. def awkward_reduce_countnonzero(
  24. toptr: List[int],
  25. fromptr: List[IN],
  26. fromptroffset: int,
  27. parents: List[int],
  28. parentsoffset: int,
  29. lenparents: int,
  30. outlength: int,
  31. ):
  32. for i in range(outlength):
  33. toptr[i] = 0
  34. for i in range(lenparents):
  35. toptr[parents[parentsoffset + i]] = fromptr[fromptroffset + i] != 0
  36. return
  37.  
  38.  
  39. awkward_reduce_countnonzero_bool_64
  40. ----------------------------------------------------
  41.  
  42. def awkward_reduce_countnonzero_bool_64(
  43. toptr: List[int],
  44. fromptr: List[bool],
  45. fromptroffset: int,
  46. parents: List[int],
  47. parentsoffset: int,
  48. lenparents: int,
  49. outlength: int,
  50. ):
  51. return awkward_reduce_countnonzero(
  52. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  53. )
  54.  
  55.  
  56. awkward_reduce_countnonzero_int8_64
  57. ----------------------------------------------------
  58.  
  59. def awkward_reduce_countnonzero_int8_64(
  60. toptr: List[int],
  61. fromptr: List[int],
  62. fromptroffset: int,
  63. parents: List[int],
  64. parentsoffset: int,
  65. lenparents: int,
  66. outlength: int,
  67. ):
  68. return awkward_reduce_countnonzero(
  69. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  70. )
  71.  
  72.  
  73. awkward_reduce_countnonzero_uint8_64
  74. ----------------------------------------------------
  75.  
  76. def awkward_reduce_countnonzero_uint8_64(
  77. toptr: List[int],
  78. fromptr: List[int],
  79. fromptroffset: int,
  80. parents: List[int],
  81. parentsoffset: int,
  82. lenparents: int,
  83. outlength: int,
  84. ):
  85. return awkward_reduce_countnonzero(
  86. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  87. )
  88.  
  89.  
  90. awkward_reduce_countnonzero_int16_64
  91. ----------------------------------------------------
  92.  
  93. def awkward_reduce_countnonzero_int16_64(
  94. toptr: List[int],
  95. fromptr: List[int],
  96. fromptroffset: int,
  97. parents: List[int],
  98. parentsoffset: int,
  99. lenparents: int,
  100. outlength: int,
  101. ):
  102. return awkward_reduce_countnonzero(
  103. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  104. )
  105.  
  106.  
  107. awkward_reduce_countnonzero_uint16_64
  108. ----------------------------------------------------
  109.  
  110. def awkward_reduce_countnonzero_uint16_64(
  111. toptr: List[int],
  112. fromptr: List[int],
  113. fromptroffset: int,
  114. parents: List[int],
  115. parentsoffset: int,
  116. lenparents: int,
  117. outlength: int,
  118. ):
  119. return awkward_reduce_countnonzero(
  120. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  121. )
  122.  
  123.  
  124. awkward_reduce_countnonzero_int32_64
  125. ----------------------------------------------------
  126.  
  127. def awkward_reduce_countnonzero_int32_64(
  128. toptr: List[int],
  129. fromptr: List[int],
  130. fromptroffset: int,
  131. parents: List[int],
  132. parentsoffset: int,
  133. lenparents: int,
  134. outlength: int,
  135. ):
  136. return awkward_reduce_countnonzero(
  137. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  138. )
  139.  
  140.  
  141. awkward_reduce_countnonzero_uint32_64
  142. ----------------------------------------------------
  143.  
  144. def awkward_reduce_countnonzero_uint32_64(
  145. toptr: List[int],
  146. fromptr: List[int],
  147. fromptroffset: int,
  148. parents: List[int],
  149. parentsoffset: int,
  150. lenparents: int,
  151. outlength: int,
  152. ):
  153. return awkward_reduce_countnonzero(
  154. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  155. )
  156.  
  157.  
  158. awkward_reduce_countnonzero_int64_64
  159. ----------------------------------------------------
  160.  
  161. def awkward_reduce_countnonzero_int64_64(
  162. toptr: List[int],
  163. fromptr: List[int],
  164. fromptroffset: int,
  165. parents: List[int],
  166. parentsoffset: int,
  167. lenparents: int,
  168. outlength: int,
  169. ):
  170. return awkward_reduce_countnonzero(
  171. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  172. )
  173.  
  174.  
  175. awkward_reduce_countnonzero_uint64_64
  176. ----------------------------------------------------
  177.  
  178. def awkward_reduce_countnonzero_uint64_64(
  179. toptr: List[int],
  180. fromptr: List[int],
  181. fromptroffset: int,
  182. parents: List[int],
  183. parentsoffset: int,
  184. lenparents: int,
  185. outlength: int,
  186. ):
  187. return awkward_reduce_countnonzero(
  188. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  189. )
  190.  
  191.  
  192. awkward_reduce_countnonzero_float32_64
  193. ----------------------------------------------------
  194.  
  195. def awkward_reduce_countnonzero_float32_64(
  196. toptr: List[int],
  197. fromptr: List[float],
  198. fromptroffset: int,
  199. parents: List[int],
  200. parentsoffset: int,
  201. lenparents: int,
  202. outlength: int,
  203. ):
  204. return awkward_reduce_countnonzero(
  205. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  206. )
  207.  
  208.  
  209. awkward_reduce_countnonzero_float64_64
  210. ----------------------------------------------------
  211.  
  212. def awkward_reduce_countnonzero_float64_64(
  213. toptr: List[int],
  214. fromptr: List[double],
  215. fromptroffset: int,
  216. parents: List[int],
  217. parentsoffset: int,
  218. lenparents: int,
  219. outlength: int,
  220. ):
  221. return awkward_reduce_countnonzero(
  222. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  223. )
  224.  
  225.  
  226. awkward_reduce_sum
  227. ----------------------------------------------------
  228.  
  229. for OUT in (int, float):
  230. for IN in (int, float):
  231.  
  232. def awkward_reduce_sum(
  233. toptr: List[OUT],
  234. fromptr: List[IN],
  235. fromptroffset: int,
  236. parents: List[int],
  237. parentsoffset: int,
  238. lenparents: int,
  239. outlength: int,
  240. ):
  241. for i in range(outlength):
  242. toptr[i] = int(0)
  243. for i in range(lenparents):
  244. toptr[parents[parentsoffset + i]] = int(fromptr[fromptroffset + i])
  245. return
  246.  
  247.  
  248. awkward_reduce_sum_int64_bool_64
  249. ----------------------------------------------------
  250.  
  251. def awkward_reduce_sum_int64_bool_64(
  252. toptr: List[int],
  253. fromptr: List[bool],
  254. fromptroffset: int,
  255. parents: List[int],
  256. parentsoffset: int,
  257. lenparents: int,
  258. outlength: int,
  259. ):
  260. for i in range(outlength):
  261. toptr[i] = 0
  262. for i in range(lenparents):
  263. toptr[parents[parentsoffset + i]] = fromptr[fromptroffset + i] != 0
  264. return
  265.  
  266.  
  267. awkward_reduce_sum_int64_int8_64
  268. ----------------------------------------------------
  269.  
  270. def awkward_reduce_sum_int64_int8_64(
  271. toptr: List[int],
  272. fromptr: List[int],
  273. fromptroffset: int,
  274. parents: List[int],
  275. parentsoffset: int,
  276. lenparents: int,
  277. outlength: int,
  278. ):
  279. return awkward_reduce_sum(
  280. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  281. )
  282.  
  283.  
  284. awkward_reduce_sum_uint64_uint8_64
  285. ----------------------------------------------------
  286.  
  287. def awkward_reduce_sum_uint64_uint8_64(
  288. toptr: List[int],
  289. fromptr: List[int],
  290. fromptroffset: int,
  291. parents: List[int],
  292. parentsoffset: int,
  293. lenparents: int,
  294. outlength: int,
  295. ):
  296. return awkward_reduce_sum(
  297. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  298. )
  299.  
  300.  
  301. awkward_reduce_sum_int64_int16_64
  302. ----------------------------------------------------
  303.  
  304. def awkward_reduce_sum_int64_int16_64(
  305. toptr: List[int],
  306. fromptr: List[int],
  307. fromptroffset: int,
  308. parents: List[int],
  309. parentsoffset: int,
  310. lenparents: int,
  311. outlength: int,
  312. ):
  313. return awkward_reduce_sum(
  314. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  315. )
  316.  
  317.  
  318. awkward_reduce_sum_uint64_uint16_64
  319. ----------------------------------------------------
  320.  
  321. def awkward_reduce_sum_uint64_uint16_64(
  322. toptr: List[int],
  323. fromptr: List[int],
  324. fromptroffset: int,
  325. parents: List[int],
  326. parentsoffset: int,
  327. lenparents: int,
  328. outlength: int,
  329. ):
  330. return awkward_reduce_sum(
  331. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  332. )
  333.  
  334.  
  335. awkward_reduce_sum_int64_int32_64
  336. ----------------------------------------------------
  337.  
  338. def awkward_reduce_sum_int64_int32_64(
  339. toptr: List[int],
  340. fromptr: List[int],
  341. fromptroffset: int,
  342. parents: List[int],
  343. parentsoffset: int,
  344. lenparents: int,
  345. outlength: int,
  346. ):
  347. return awkward_reduce_sum(
  348. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  349. )
  350.  
  351.  
  352. awkward_reduce_sum_uint64_uint32_64
  353. ----------------------------------------------------
  354.  
  355. def awkward_reduce_sum_uint64_uint32_64(
  356. toptr: List[int],
  357. fromptr: List[int],
  358. fromptroffset: int,
  359. parents: List[int],
  360. parentsoffset: int,
  361. lenparents: int,
  362. outlength: int,
  363. ):
  364. return awkward_reduce_sum(
  365. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  366. )
  367.  
  368.  
  369. awkward_reduce_sum_int64_int64_64
  370. ----------------------------------------------------
  371.  
  372. def awkward_reduce_sum_int64_int64_64(
  373. toptr: List[int],
  374. fromptr: List[int],
  375. fromptroffset: int,
  376. parents: List[int],
  377. parentsoffset: int,
  378. lenparents: int,
  379. outlength: int,
  380. ):
  381. return awkward_reduce_sum(
  382. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  383. )
  384.  
  385.  
  386. awkward_reduce_sum_uint64_uint64_64
  387. ----------------------------------------------------
  388.  
  389. def awkward_reduce_sum_uint64_uint64_64(
  390. toptr: List[int],
  391. fromptr: List[int],
  392. fromptroffset: int,
  393. parents: List[int],
  394. parentsoffset: int,
  395. lenparents: int,
  396. outlength: int,
  397. ):
  398. return awkward_reduce_sum(
  399. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  400. )
  401.  
  402.  
  403. awkward_reduce_sum_float32_float32_64
  404. ----------------------------------------------------
  405.  
  406. def awkward_reduce_sum_float32_float32_64(
  407. toptr: List[float],
  408. fromptr: List[float],
  409. fromptroffset: int,
  410. parents: List[int],
  411. parentsoffset: int,
  412. lenparents: int,
  413. outlength: int,
  414. ):
  415. return awkward_reduce_sum(
  416. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  417. )
  418.  
  419.  
  420. awkward_reduce_sum_float64_float64_64
  421. ----------------------------------------------------
  422.  
  423. def awkward_reduce_sum_float64_float64_64(
  424. toptr: List[double],
  425. fromptr: List[double],
  426. fromptroffset: int,
  427. parents: List[int],
  428. parentsoffset: int,
  429. lenparents: int,
  430. outlength: int,
  431. ):
  432. return awkward_reduce_sum(
  433. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  434. )
  435.  
  436.  
  437. awkward_reduce_sum_int32_bool_64
  438. ----------------------------------------------------
  439.  
  440. def awkward_reduce_sum_int32_bool_64(
  441. toptr: List[int],
  442. fromptr: List[bool],
  443. fromptroffset: int,
  444. parents: List[int],
  445. parentsoffset: int,
  446. lenparents: int,
  447. outlength: int,
  448. ):
  449. for i in range(outlength):
  450. toptr[i] = 0
  451. for i in range(lenparents):
  452. toptr[parents[parentsoffset + i]] = fromptr[fromptroffset + i] != 0
  453. return
  454.  
  455.  
  456. awkward_reduce_sum_int32_int8_64
  457. ----------------------------------------------------
  458.  
  459. def awkward_reduce_sum_int32_int8_64(
  460. toptr: List[int],
  461. fromptr: List[int],
  462. fromptroffset: int,
  463. parents: List[int],
  464. parentsoffset: int,
  465. lenparents: int,
  466. outlength: int,
  467. ):
  468. return awkward_reduce_sum(
  469. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  470. )
  471.  
  472.  
  473. awkward_reduce_sum_uint32_uint8_64
  474. ----------------------------------------------------
  475.  
  476. def awkward_reduce_sum_uint32_uint8_64(
  477. toptr: List[int],
  478. fromptr: List[int],
  479. fromptroffset: int,
  480. parents: List[int],
  481. parentsoffset: int,
  482. lenparents: int,
  483. outlength: int,
  484. ):
  485. return awkward_reduce_sum(
  486. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  487. )
  488.  
  489.  
  490. awkward_reduce_sum_int32_int16_64
  491. ----------------------------------------------------
  492.  
  493. def awkward_reduce_sum_int32_int16_64(
  494. toptr: List[int],
  495. fromptr: List[int],
  496. fromptroffset: int,
  497. parents: List[int],
  498. parentsoffset: int,
  499. lenparents: int,
  500. outlength: int,
  501. ):
  502. return awkward_reduce_sum(
  503. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  504. )
  505.  
  506.  
  507. awkward_reduce_sum_uint32_uint16_64
  508. ----------------------------------------------------
  509.  
  510. def awkward_reduce_sum_uint32_uint16_64(
  511. toptr: List[int],
  512. fromptr: List[int],
  513. fromptroffset: int,
  514. parents: List[int],
  515. parentsoffset: int,
  516. lenparents: int,
  517. outlength: int,
  518. ):
  519. return awkward_reduce_sum(
  520. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  521. )
  522.  
  523.  
  524. awkward_reduce_sum_int32_int32_64
  525. ----------------------------------------------------
  526.  
  527. def awkward_reduce_sum_int32_int32_64(
  528. toptr: List[int],
  529. fromptr: List[int],
  530. fromptroffset: int,
  531. parents: List[int],
  532. parentsoffset: int,
  533. lenparents: int,
  534. outlength: int,
  535. ):
  536. return awkward_reduce_sum(
  537. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  538. )
  539.  
  540.  
  541. awkward_reduce_sum_uint32_uint32_64
  542. ----------------------------------------------------
  543.  
  544. def awkward_reduce_sum_uint32_uint32_64(
  545. toptr: List[int],
  546. fromptr: List[int],
  547. fromptroffset: int,
  548. parents: List[int],
  549. parentsoffset: int,
  550. lenparents: int,
  551. outlength: int,
  552. ):
  553. return awkward_reduce_sum(
  554. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  555. )
  556.  
  557.  
  558. awkward_reduce_sum_bool
  559. ----------------------------------------------------
  560.  
  561. for IN in (bool, int, float):
  562.  
  563. def awkward_reduce_sum_bool(
  564. toptr: List[bool],
  565. fromptr: List[IN],
  566. fromptroffset: int,
  567. parents: List[int],
  568. parentsoffset: int,
  569. lenparents: int,
  570. outlength: int,
  571. ):
  572. for i in range(outlength):
  573. toptr[i] = int(0)
  574. for i in range(lenparents):
  575. toptr[parents[parentsoffset + i]] = fromptr[fromptroffset + i] != 0
  576. return
  577.  
  578.  
  579. awkward_reduce_sum_bool_bool_64
  580. ----------------------------------------------------
  581.  
  582. def awkward_reduce_sum_bool_bool_64(
  583. toptr: List[bool],
  584. fromptr: List[bool],
  585. fromptroffset: int,
  586. parents: List[int],
  587. parentsoffset: int,
  588. lenparents: int,
  589. outlength: int,
  590. ):
  591. return awkward_reduce_sum_int(
  592. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  593. )
  594.  
  595.  
  596. awkward_reduce_sum_bool_int8_64
  597. ----------------------------------------------------
  598.  
  599. def awkward_reduce_sum_bool_int8_64(
  600. toptr: List[bool],
  601. fromptr: List[int],
  602. fromptroffset: int,
  603. parents: List[int],
  604. parentsoffset: int,
  605. lenparents: int,
  606. outlength: int,
  607. ):
  608. return awkward_reduce_sum_int(
  609. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  610. )
  611.  
  612.  
  613. awkward_reduce_sum_bool_uint8_64
  614. ----------------------------------------------------
  615.  
  616. def awkward_reduce_sum_bool_uint8_64(
  617. toptr: List[bool],
  618. fromptr: List[int],
  619. fromptroffset: int,
  620. parents: List[int],
  621. parentsoffset: int,
  622. lenparents: int,
  623. outlength: int,
  624. ):
  625. return awkward_reduce_sum_int(
  626. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  627. )
  628.  
  629.  
  630. awkward_reduce_sum_bool_int16_64
  631. ----------------------------------------------------
  632.  
  633. def awkward_reduce_sum_bool_int16_64(
  634. toptr: List[bool],
  635. fromptr: List[int],
  636. fromptroffset: int,
  637. parents: List[int],
  638. parentsoffset: int,
  639. lenparents: int,
  640. outlength: int,
  641. ):
  642. return awkward_reduce_sum_int(
  643. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  644. )
  645.  
  646.  
  647. awkward_reduce_sum_bool_uint16_64
  648. ----------------------------------------------------
  649.  
  650. def awkward_reduce_sum_bool_uint16_64(
  651. toptr: List[bool],
  652. fromptr: List[int],
  653. fromptroffset: int,
  654. parents: List[int],
  655. parentsoffset: int,
  656. lenparents: int,
  657. outlength: int,
  658. ):
  659. return awkward_reduce_sum_int(
  660. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  661. )
  662.  
  663.  
  664. awkward_reduce_sum_bool_int32_64
  665. ----------------------------------------------------
  666.  
  667. def awkward_reduce_sum_bool_int32_64(
  668. toptr: List[bool],
  669. fromptr: List[int],
  670. fromptroffset: int,
  671. parents: List[int],
  672. parentsoffset: int,
  673. lenparents: int,
  674. outlength: int,
  675. ):
  676. return awkward_reduce_sum_int(
  677. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  678. )
  679.  
  680.  
  681. awkward_reduce_sum_bool_uint32_64
  682. ----------------------------------------------------
  683.  
  684. def awkward_reduce_sum_bool_uint32_64(
  685. toptr: List[bool],
  686. fromptr: List[int],
  687. fromptroffset: int,
  688. parents: List[int],
  689. parentsoffset: int,
  690. lenparents: int,
  691. outlength: int,
  692. ):
  693. return awkward_reduce_sum_int(
  694. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  695. )
  696.  
  697.  
  698. awkward_reduce_sum_bool_int64_64
  699. ----------------------------------------------------
  700.  
  701. def awkward_reduce_sum_bool_int64_64(
  702. toptr: List[bool],
  703. fromptr: List[int],
  704. fromptroffset: int,
  705. parents: List[int],
  706. parentsoffset: int,
  707. lenparents: int,
  708. outlength: int,
  709. ):
  710. return awkward_reduce_sum_int(
  711. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  712. )
  713.  
  714.  
  715. awkward_reduce_sum_bool_uint64_64
  716. ----------------------------------------------------
  717.  
  718. def awkward_reduce_sum_bool_uint64_64(
  719. toptr: List[bool],
  720. fromptr: List[int],
  721. fromptroffset: int,
  722. parents: List[int],
  723. parentsoffset: int,
  724. lenparents: int,
  725. outlength: int,
  726. ):
  727. return awkward_reduce_sum_int(
  728. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  729. )
  730.  
  731.  
  732. awkward_reduce_sum_bool_float32_64
  733. ----------------------------------------------------
  734.  
  735. def awkward_reduce_sum_bool_float32_64(
  736. toptr: List[bool],
  737. fromptr: List[float],
  738. fromptroffset: int,
  739. parents: List[int],
  740. parentsoffset: int,
  741. lenparents: int,
  742. outlength: int,
  743. ):
  744. return awkward_reduce_sum_int(
  745. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  746. )
  747.  
  748.  
  749. awkward_reduce_sum_bool_float64_64
  750. ----------------------------------------------------
  751.  
  752. def awkward_reduce_sum_bool_float64_64(
  753. toptr: List[bool],
  754. fromptr: List[double],
  755. fromptroffset: int,
  756. parents: List[int],
  757. parentsoffset: int,
  758. lenparents: int,
  759. outlength: int,
  760. ):
  761. return awkward_reduce_sum_int(
  762. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  763. )
  764.  
  765.  
  766. awkward_reduce_prod
  767. ----------------------------------------------------
  768.  
  769. for OUT in (int, float):
  770. for IN in (int, float):
  771.  
  772. def awkward_reduce_prod(
  773. toptr: List[OUT],
  774. fromptr: List[IN],
  775. fromptroffset: int,
  776. parents: List[int],
  777. parentsoffset: int,
  778. lenparents: int,
  779. outlength: int,
  780. ):
  781. for i in range(outlength):
  782. toptr[i] = int(1)
  783. for i in range(lenparents):
  784. toptr[parents[parentsoffset + i]] = int(fromptr[fromptroffset + i])
  785. return
  786.  
  787.  
  788. awkward_reduce_prod_int64_bool_64
  789. ----------------------------------------------------
  790.  
  791. def awkward_reduce_prod_int64_bool_64(
  792. toptr: List[int],
  793. fromptr: List[bool],
  794. fromptroffset: int,
  795. parents: List[int],
  796. parentsoffset: int,
  797. lenparents: int,
  798. outlength: int,
  799. ):
  800. for i in range(outlength):
  801. toptr[i] = 1
  802. for i in range(lenparents):
  803. toptr[parents[parentsoffset + i]] = fromptr[fromptroffset + i] != 0
  804. return
  805.  
  806.  
  807. awkward_reduce_prod_int64_int8_64
  808. ----------------------------------------------------
  809.  
  810. def awkward_reduce_prod_int64_int8_64(
  811. toptr: List[int],
  812. fromptr: List[int],
  813. fromptroffset: int,
  814. parents: List[int],
  815. parentsoffset: int,
  816. lenparents: int,
  817. outlength: int,
  818. ):
  819. return awkward_reduce_prod(
  820. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  821. )
  822.  
  823.  
  824. awkward_reduce_prod_uint64_uint8_64
  825. ----------------------------------------------------
  826.  
  827. def awkward_reduce_prod_uint64_uint8_64(
  828. toptr: List[int],
  829. fromptr: List[int],
  830. fromptroffset: int,
  831. parents: List[int],
  832. parentsoffset: int,
  833. lenparents: int,
  834. outlength: int,
  835. ):
  836. return awkward_reduce_prod(
  837. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  838. )
  839.  
  840.  
  841. awkward_reduce_prod_int64_int16_64
  842. ----------------------------------------------------
  843.  
  844. def awkward_reduce_prod_int64_int16_64(
  845. toptr: List[int],
  846. fromptr: List[int],
  847. fromptroffset: int,
  848. parents: List[int],
  849. parentsoffset: int,
  850. lenparents: int,
  851. outlength: int,
  852. ):
  853. return awkward_reduce_prod(
  854. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  855. )
  856.  
  857.  
  858. awkward_reduce_prod_uint64_uint16_64
  859. ----------------------------------------------------
  860.  
  861. def awkward_reduce_prod_uint64_uint16_64(
  862. toptr: List[int],
  863. fromptr: List[int],
  864. fromptroffset: int,
  865. parents: List[int],
  866. parentsoffset: int,
  867. lenparents: int,
  868. outlength: int,
  869. ):
  870. return awkward_reduce_prod(
  871. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  872. )
  873.  
  874.  
  875. awkward_reduce_prod_int64_int32_64
  876. ----------------------------------------------------
  877.  
  878. def awkward_reduce_prod_int64_int32_64(
  879. toptr: List[int],
  880. fromptr: List[int],
  881. fromptroffset: int,
  882. parents: List[int],
  883. parentsoffset: int,
  884. lenparents: int,
  885. outlength: int,
  886. ):
  887. return awkward_reduce_prod(
  888. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  889. )
  890.  
  891.  
  892. awkward_reduce_prod_uint64_uint32_64
  893. ----------------------------------------------------
  894.  
  895. def awkward_reduce_prod_uint64_uint32_64(
  896. toptr: List[int],
  897. fromptr: List[int],
  898. fromptroffset: int,
  899. parents: List[int],
  900. parentsoffset: int,
  901. lenparents: int,
  902. outlength: int,
  903. ):
  904. return awkward_reduce_prod(
  905. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  906. )
  907.  
  908.  
  909. awkward_reduce_prod_int64_int64_64
  910. ----------------------------------------------------
  911.  
  912. def awkward_reduce_prod_int64_int64_64(
  913. toptr: List[int],
  914. fromptr: List[int],
  915. fromptroffset: int,
  916. parents: List[int],
  917. parentsoffset: int,
  918. lenparents: int,
  919. outlength: int,
  920. ):
  921. return awkward_reduce_prod(
  922. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  923. )
  924.  
  925.  
  926. awkward_reduce_prod_uint64_uint64_64
  927. ----------------------------------------------------
  928.  
  929. def awkward_reduce_prod_uint64_uint64_64(
  930. toptr: List[int],
  931. fromptr: List[int],
  932. fromptroffset: int,
  933. parents: List[int],
  934. parentsoffset: int,
  935. lenparents: int,
  936. outlength: int,
  937. ):
  938. return awkward_reduce_prod(
  939. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  940. )
  941.  
  942.  
  943. awkward_reduce_prod_float32_float32_64
  944. ----------------------------------------------------
  945.  
  946. def awkward_reduce_prod_float32_float32_64(
  947. toptr: List[float],
  948. fromptr: List[float],
  949. fromptroffset: int,
  950. parents: List[int],
  951. parentsoffset: int,
  952. lenparents: int,
  953. outlength: int,
  954. ):
  955. return awkward_reduce_prod(
  956. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  957. )
  958.  
  959.  
  960. awkward_reduce_prod_float64_float64_64
  961. ----------------------------------------------------
  962.  
  963. def awkward_reduce_prod_float64_float64_64(
  964. toptr: List[double],
  965. fromptr: List[double],
  966. fromptroffset: int,
  967. parents: List[int],
  968. parentsoffset: int,
  969. lenparents: int,
  970. outlength: int,
  971. ):
  972. return awkward_reduce_prod(
  973. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  974. )
  975.  
  976.  
  977. awkward_reduce_prod_int32_bool_64
  978. ----------------------------------------------------
  979.  
  980. def awkward_reduce_prod_int32_bool_64(
  981. toptr: List[int],
  982. fromptr: List[bool],
  983. fromptroffset: int,
  984. parents: List[int],
  985. parentsoffset: int,
  986. lenparents: int,
  987. outlength: int,
  988. ):
  989. for i in range(outlength):
  990. toptr[i] = 1
  991. for i in range(lenparents):
  992. toptr[parents[parentsoffset + i]] = fromptr[fromptroffset + i] != 0
  993. return
  994.  
  995.  
  996. awkward_reduce_prod_int32_int8_64
  997. ----------------------------------------------------
  998.  
  999. def awkward_reduce_prod_int32_int8_64(
  1000. toptr: List[int],
  1001. fromptr: List[int],
  1002. fromptroffset: int,
  1003. parents: List[int],
  1004. parentsoffset: int,
  1005. lenparents: int,
  1006. outlength: int,
  1007. ):
  1008. return awkward_reduce_prod(
  1009. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1010. )
  1011.  
  1012.  
  1013. awkward_reduce_prod_uint32_uint8_64
  1014. ----------------------------------------------------
  1015.  
  1016. def awkward_reduce_prod_uint32_uint8_64(
  1017. toptr: List[int],
  1018. fromptr: List[int],
  1019. fromptroffset: int,
  1020. parents: List[int],
  1021. parentsoffset: int,
  1022. lenparents: int,
  1023. outlength: int,
  1024. ):
  1025. return awkward_reduce_prod(
  1026. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1027. )
  1028.  
  1029.  
  1030. awkward_reduce_prod_int32_int16_64
  1031. ----------------------------------------------------
  1032.  
  1033. def awkward_reduce_prod_int32_int16_64(
  1034. toptr: List[int],
  1035. fromptr: List[int],
  1036. fromptroffset: int,
  1037. parents: List[int],
  1038. parentsoffset: int,
  1039. lenparents: int,
  1040. outlength: int,
  1041. ):
  1042. return awkward_reduce_prod(
  1043. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1044. )
  1045.  
  1046.  
  1047. awkward_reduce_prod_uint32_uint16_64
  1048. ----------------------------------------------------
  1049.  
  1050. def awkward_reduce_prod_uint32_uint16_64(
  1051. toptr: List[int],
  1052. fromptr: List[int],
  1053. fromptroffset: int,
  1054. parents: List[int],
  1055. parentsoffset: int,
  1056. lenparents: int,
  1057. outlength: int,
  1058. ):
  1059. return awkward_reduce_prod(
  1060. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1061. )
  1062.  
  1063.  
  1064. awkward_reduce_prod_int32_int32_64
  1065. ----------------------------------------------------
  1066.  
  1067. def awkward_reduce_prod_int32_int32_64(
  1068. toptr: List[int],
  1069. fromptr: List[int],
  1070. fromptroffset: int,
  1071. parents: List[int],
  1072. parentsoffset: int,
  1073. lenparents: int,
  1074. outlength: int,
  1075. ):
  1076. return awkward_reduce_prod(
  1077. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1078. )
  1079.  
  1080.  
  1081. awkward_reduce_prod_uint32_uint32_64
  1082. ----------------------------------------------------
  1083.  
  1084. def awkward_reduce_prod_uint32_uint32_64(
  1085. toptr: List[int],
  1086. fromptr: List[int],
  1087. fromptroffset: int,
  1088. parents: List[int],
  1089. parentsoffset: int,
  1090. lenparents: int,
  1091. outlength: int,
  1092. ):
  1093. return awkward_reduce_prod(
  1094. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1095. )
  1096.  
  1097.  
  1098. awkward_reduce_prod_bool
  1099. ----------------------------------------------------
  1100.  
  1101. for IN in (bool, int, float):
  1102.  
  1103. def awkward_reduce_prod_bool(
  1104. toptr: List[bool],
  1105. fromptr: List[IN],
  1106. fromptroffset: int,
  1107. parents: List[int],
  1108. parentsoffset: int,
  1109. lenparents: int,
  1110. outlength: int,
  1111. ):
  1112. for i in range(outlength):
  1113. toptr[i] = int(1)
  1114. for i in range(lenparents):
  1115. toptr[parents[parentsoffset + i]] = fromptr[fromptroffset + i] != 0
  1116. return
  1117.  
  1118.  
  1119. awkward_reduce_prod_bool_bool_64
  1120. ----------------------------------------------------
  1121.  
  1122. def awkward_reduce_prod_bool_bool_64(
  1123. toptr: List[bool],
  1124. fromptr: List[bool],
  1125. fromptroffset: int,
  1126. parents: List[int],
  1127. parentsoffset: int,
  1128. lenparents: int,
  1129. outlength: int,
  1130. ):
  1131. return awkward_reduce_prod_int(
  1132. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1133. )
  1134.  
  1135.  
  1136. awkward_reduce_prod_bool_int8_64
  1137. ----------------------------------------------------
  1138.  
  1139. def awkward_reduce_prod_bool_int8_64(
  1140. toptr: List[bool],
  1141. fromptr: List[int],
  1142. fromptroffset: int,
  1143. parents: List[int],
  1144. parentsoffset: int,
  1145. lenparents: int,
  1146. outlength: int,
  1147. ):
  1148. return awkward_reduce_prod_int(
  1149. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1150. )
  1151.  
  1152.  
  1153. awkward_reduce_prod_bool_uint8_64
  1154. ----------------------------------------------------
  1155.  
  1156. def awkward_reduce_prod_bool_uint8_64(
  1157. toptr: List[bool],
  1158. fromptr: List[int],
  1159. fromptroffset: int,
  1160. parents: List[int],
  1161. parentsoffset: int,
  1162. lenparents: int,
  1163. outlength: int,
  1164. ):
  1165. return awkward_reduce_prod_int(
  1166. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1167. )
  1168.  
  1169.  
  1170. awkward_reduce_prod_bool_int16_64
  1171. ----------------------------------------------------
  1172.  
  1173. def awkward_reduce_prod_bool_int16_64(
  1174. toptr: List[bool],
  1175. fromptr: List[int],
  1176. fromptroffset: int,
  1177. parents: List[int],
  1178. parentsoffset: int,
  1179. lenparents: int,
  1180. outlength: int,
  1181. ):
  1182. return awkward_reduce_prod_int(
  1183. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1184. )
  1185.  
  1186.  
  1187. awkward_reduce_prod_bool_uint16_64
  1188. ----------------------------------------------------
  1189.  
  1190. def awkward_reduce_prod_bool_uint16_64(
  1191. toptr: List[bool],
  1192. fromptr: List[int],
  1193. fromptroffset: int,
  1194. parents: List[int],
  1195. parentsoffset: int,
  1196. lenparents: int,
  1197. outlength: int,
  1198. ):
  1199. return awkward_reduce_prod_int(
  1200. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1201. )
  1202.  
  1203.  
  1204. awkward_reduce_prod_bool_int32_64
  1205. ----------------------------------------------------
  1206.  
  1207. def awkward_reduce_prod_bool_int32_64(
  1208. toptr: List[bool],
  1209. fromptr: List[int],
  1210. fromptroffset: int,
  1211. parents: List[int],
  1212. parentsoffset: int,
  1213. lenparents: int,
  1214. outlength: int,
  1215. ):
  1216. return awkward_reduce_prod_int(
  1217. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1218. )
  1219.  
  1220.  
  1221. awkward_reduce_prod_bool_uint32_64
  1222. ----------------------------------------------------
  1223.  
  1224. def awkward_reduce_prod_bool_uint32_64(
  1225. toptr: List[bool],
  1226. fromptr: List[int],
  1227. fromptroffset: int,
  1228. parents: List[int],
  1229. parentsoffset: int,
  1230. lenparents: int,
  1231. outlength: int,
  1232. ):
  1233. return awkward_reduce_prod_int(
  1234. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1235. )
  1236.  
  1237.  
  1238. awkward_reduce_prod_bool_int64_64
  1239. ----------------------------------------------------
  1240.  
  1241. def awkward_reduce_prod_bool_int64_64(
  1242. toptr: List[bool],
  1243. fromptr: List[int],
  1244. fromptroffset: int,
  1245. parents: List[int],
  1246. parentsoffset: int,
  1247. lenparents: int,
  1248. outlength: int,
  1249. ):
  1250. return awkward_reduce_prod_int(
  1251. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1252. )
  1253.  
  1254.  
  1255. awkward_reduce_prod_bool_uint64_64
  1256. ----------------------------------------------------
  1257.  
  1258. def awkward_reduce_prod_bool_uint64_64(
  1259. toptr: List[bool],
  1260. fromptr: List[int],
  1261. fromptroffset: int,
  1262. parents: List[int],
  1263. parentsoffset: int,
  1264. lenparents: int,
  1265. outlength: int,
  1266. ):
  1267. return awkward_reduce_prod_int(
  1268. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1269. )
  1270.  
  1271.  
  1272. awkward_reduce_prod_bool_float32_64
  1273. ----------------------------------------------------
  1274.  
  1275. def awkward_reduce_prod_bool_float32_64(
  1276. toptr: List[bool],
  1277. fromptr: List[float],
  1278. fromptroffset: int,
  1279. parents: List[int],
  1280. parentsoffset: int,
  1281. lenparents: int,
  1282. outlength: int,
  1283. ):
  1284. return awkward_reduce_prod_int(
  1285. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1286. )
  1287.  
  1288.  
  1289. awkward_reduce_prod_bool_float64_64
  1290. ----------------------------------------------------
  1291.  
  1292. def awkward_reduce_prod_bool_float64_64(
  1293. toptr: List[bool],
  1294. fromptr: List[double],
  1295. fromptroffset: int,
  1296. parents: List[int],
  1297. parentsoffset: int,
  1298. lenparents: int,
  1299. outlength: int,
  1300. ):
  1301. return awkward_reduce_prod_int(
  1302. toptr, fromptr, fromptroffset, parents, parentsoffset, lenparents, outlength
  1303. )
  1304.  
  1305.  
  1306. awkward_reduce_min
  1307. ----------------------------------------------------
  1308.  
  1309. for OUT in (int, float):
  1310. for IN in (int, float):
  1311.  
  1312. def awkward_reduce_min(
  1313. toptr: List[OUT],
  1314. fromptr: List[IN],
  1315. fromptroffset: int,
  1316. parents: List[int],
  1317. parentsoffset: int,
  1318. lenparents: int,
  1319. outlength: int,
  1320. identity: int,
  1321. ):
  1322. for i in range(outlength):
  1323. toptr[i] = identity
  1324. for i in range(lenparents):
  1325. x = fromptr[fromptroffset + i]
  1326. toptr[parents[parentsoffset + i]] = (
  1327. x
  1328. if x < toptr[parents[parentsoffset + i]]
  1329. else toptr[parents[parentsoffset + i]]
  1330. )
  1331. return
  1332.  
  1333.  
  1334. awkward_reduce_min_int8_int8_64
  1335. ----------------------------------------------------
  1336.  
  1337. def awkward_reduce_min_int8_int8_64(
  1338. toptr: List[int],
  1339. fromptr: List[int],
  1340. fromptroffset: int,
  1341. parents: List[int],
  1342. parentsoffset: int,
  1343. lenparents: int,
  1344. outlength: int,
  1345. identity: int,
  1346. ):
  1347. return awkward_reduce_min(
  1348. toptr,
  1349. fromptr,
  1350. fromptroffset,
  1351. parents,
  1352. parentsoffset,
  1353. lenparents,
  1354. outlength,
  1355. identity,
  1356. )
  1357.  
  1358.  
  1359. awkward_reduce_min_uint8_uint8_64
  1360. ----------------------------------------------------
  1361.  
  1362. def awkward_reduce_min_uint8_uint8_64(
  1363. toptr: List[int],
  1364. fromptr: List[int],
  1365. fromptroffset: int,
  1366. parents: List[int],
  1367. parentsoffset: int,
  1368. lenparents: int,
  1369. outlength: int,
  1370. identity: int,
  1371. ):
  1372. return awkward_reduce_min(
  1373. toptr,
  1374. fromptr,
  1375. fromptroffset,
  1376. parents,
  1377. parentsoffset,
  1378. lenparents,
  1379. outlength,
  1380. identity,
  1381. )
  1382.  
  1383.  
  1384. awkward_reduce_min_int16_int16_64
  1385. ----------------------------------------------------
  1386.  
  1387. def awkward_reduce_min_int16_int16_64(
  1388. toptr: List[int],
  1389. fromptr: List[int],
  1390. fromptroffset: int,
  1391. parents: List[int],
  1392. parentsoffset: int,
  1393. lenparents: int,
  1394. outlength: int,
  1395. identity: int,
  1396. ):
  1397. return awkward_reduce_min(
  1398. toptr,
  1399. fromptr,
  1400. fromptroffset,
  1401. parents,
  1402. parentsoffset,
  1403. lenparents,
  1404. outlength,
  1405. identity,
  1406. )
  1407.  
  1408.  
  1409. awkward_reduce_min_uint16_uint16_64
  1410. ----------------------------------------------------
  1411.  
  1412. def awkward_reduce_min_uint16_uint16_64(
  1413. toptr: List[int],
  1414. fromptr: List[int],
  1415. fromptroffset: int,
  1416. parents: List[int],
  1417. parentsoffset: int,
  1418. lenparents: int,
  1419. outlength: int,
  1420. identity: int,
  1421. ):
  1422. return awkward_reduce_min(
  1423. toptr,
  1424. fromptr,
  1425. fromptroffset,
  1426. parents,
  1427. parentsoffset,
  1428. lenparents,
  1429. outlength,
  1430. identity,
  1431. )
  1432.  
  1433.  
  1434. awkward_reduce_min_int32_int32_64
  1435. ----------------------------------------------------
  1436.  
  1437. def awkward_reduce_min_int32_int32_64(
  1438. toptr: List[int],
  1439. fromptr: List[int],
  1440. fromptroffset: int,
  1441. parents: List[int],
  1442. parentsoffset: int,
  1443. lenparents: int,
  1444. outlength: int,
  1445. identity: int,
  1446. ):
  1447. return awkward_reduce_min(
  1448. toptr,
  1449. fromptr,
  1450. fromptroffset,
  1451. parents,
  1452. parentsoffset,
  1453. lenparents,
  1454. outlength,
  1455. identity,
  1456. )
  1457.  
  1458.  
  1459. awkward_reduce_min_uint32_uint32_64
  1460. ----------------------------------------------------
  1461.  
  1462. def awkward_reduce_min_uint32_uint32_64(
  1463. toptr: List[int],
  1464. fromptr: List[int],
  1465. fromptroffset: int,
  1466. parents: List[int],
  1467. parentsoffset: int,
  1468. lenparents: int,
  1469. outlength: int,
  1470. identity: int,
  1471. ):
  1472. return awkward_reduce_min(
  1473. toptr,
  1474. fromptr,
  1475. fromptroffset,
  1476. parents,
  1477. parentsoffset,
  1478. lenparents,
  1479. outlength,
  1480. identity,
  1481. )
  1482.  
  1483.  
  1484. awkward_reduce_min_int64_int64_64
  1485. ----------------------------------------------------
  1486.  
  1487. def awkward_reduce_min_int64_int64_64(
  1488. toptr: List[int],
  1489. fromptr: List[int],
  1490. fromptroffset: int,
  1491. parents: List[int],
  1492. parentsoffset: int,
  1493. lenparents: int,
  1494. outlength: int,
  1495. identity: int,
  1496. ):
  1497. return awkward_reduce_min(
  1498. toptr,
  1499. fromptr,
  1500. fromptroffset,
  1501. parents,
  1502. parentsoffset,
  1503. lenparents,
  1504. outlength,
  1505. identity,
  1506. )
  1507.  
  1508.  
  1509. awkward_reduce_min_uint64_uint64_64
  1510. ----------------------------------------------------
  1511.  
  1512. def awkward_reduce_min_uint64_uint64_64(
  1513. toptr: List[int],
  1514. fromptr: List[int],
  1515. fromptroffset: int,
  1516. parents: List[int],
  1517. parentsoffset: int,
  1518. lenparents: int,
  1519. outlength: int,
  1520. identity: int,
  1521. ):
  1522. return awkward_reduce_min(
  1523. toptr,
  1524. fromptr,
  1525. fromptroffset,
  1526. parents,
  1527. parentsoffset,
  1528. lenparents,
  1529. outlength,
  1530. identity,
  1531. )
  1532.  
  1533.  
  1534. awkward_reduce_min_float32_float32_64
  1535. ----------------------------------------------------
  1536.  
  1537. def awkward_reduce_min_float32_float32_64(
  1538. toptr: List[float],
  1539. fromptr: List[float],
  1540. fromptroffset: int,
  1541. parents: List[int],
  1542. parentsoffset: int,
  1543. lenparents: int,
  1544. outlength: int,
  1545. identity: float,
  1546. ):
  1547. return awkward_reduce_min(
  1548. toptr,
  1549. fromptr,
  1550. fromptroffset,
  1551. parents,
  1552. parentsoffset,
  1553. lenparents,
  1554. outlength,
  1555. identity,
  1556. )
  1557.  
  1558.  
  1559. awkward_reduce_min_float64_float64_64
  1560. ----------------------------------------------------
  1561.  
  1562. def awkward_reduce_min_float64_float64_64(
  1563. toptr: List[double],
  1564. fromptr: List[double],
  1565. fromptroffset: int,
  1566. parents: List[int],
  1567. parentsoffset: int,
  1568. lenparents: int,
  1569. outlength: int,
  1570. identity: double,
  1571. ):
  1572. return awkward_reduce_min(
  1573. toptr,
  1574. fromptr,
  1575. fromptroffset,
  1576. parents,
  1577. parentsoffset,
  1578. lenparents,
  1579. outlength,
  1580. identity,
  1581. )
  1582.  
  1583.  
  1584. awkward_reduce_max
  1585. ----------------------------------------------------
  1586.  
  1587. for OUT in (int, float):
  1588. for IN in (int, float):
  1589.  
  1590. def awkward_reduce_max(
  1591. toptr: List[OUT],
  1592. fromptr: List[IN],
  1593. fromptroffset: int,
  1594. parents: List[int],
  1595. parentsoffset: int,
  1596. lenparents: int,
  1597. outlength: int,
  1598. identity: int,
  1599. ):
  1600. for i in range(outlength):
  1601. toptr[i] = identity
  1602. for i in range(lenparents):
  1603. x = fromptr[fromptroffset + i]
  1604. toptr[parents[parentsoffset + i]] = (
  1605. x
  1606. if x > toptr[parents[parentsoffset + i]]
  1607. else toptr[parents[parentsoffset + i]]
  1608. )
  1609. return
  1610.  
  1611.  
  1612. awkward_reduce_max_int8_int8_64
  1613. ----------------------------------------------------
  1614.  
  1615. def awkward_reduce_max_int8_int8_64(
  1616. toptr: List[int],
  1617. fromptr: List[int],
  1618. fromptroffset: int,
  1619. parents: List[int],
  1620. parentsoffset: int,
  1621. lenparents: int,
  1622. outlength: int,
  1623. identity: int,
  1624. ):
  1625. return awkward_reduce_max(
  1626. toptr,
  1627. fromptr,
  1628. fromptroffset,
  1629. parents,
  1630. parentsoffset,
  1631. lenparents,
  1632. outlength,
  1633. identity,
  1634. )
  1635.  
  1636.  
  1637. awkward_reduce_max_uint8_uint8_64
  1638. ----------------------------------------------------
  1639.  
  1640. def awkward_reduce_max_uint8_uint8_64(
  1641. toptr: List[int],
  1642. fromptr: List[int],
  1643. fromptroffset: int,
  1644. parents: List[int],
  1645. parentsoffset: int,
  1646. lenparents: int,
  1647. outlength: int,
  1648. identity: int,
  1649. ):
  1650. return awkward_reduce_max(
  1651. toptr,
  1652. fromptr,
  1653. fromptroffset,
  1654. parents,
  1655. parentsoffset,
  1656. lenparents,
  1657. outlength,
  1658. identity,
  1659. )
  1660.  
  1661.  
  1662. awkward_reduce_max_int16_int16_64
  1663. ----------------------------------------------------
  1664.  
  1665. def awkward_reduce_max_int16_int16_64(
  1666. toptr: List[int],
  1667. fromptr: List[int],
  1668. fromptroffset: int,
  1669. parents: List[int],
  1670. parentsoffset: int,
  1671. lenparents: int,
  1672. outlength: int,
  1673. identity: int,
  1674. ):
  1675. return awkward_reduce_max(
  1676. toptr,
  1677. fromptr,
  1678. fromptroffset,
  1679. parents,
  1680. parentsoffset,
  1681. lenparents,
  1682. outlength,
  1683. identity,
  1684. )
  1685.  
  1686.  
  1687. awkward_reduce_max_uint16_uint16_64
  1688. ----------------------------------------------------
  1689.  
  1690. def awkward_reduce_max_uint16_uint16_64(
  1691. toptr: List[int],
  1692. fromptr: List[int],
  1693. fromptroffset: int,
  1694. parents: List[int],
  1695. parentsoffset: int,
  1696. lenparents: int,
  1697. outlength: int,
  1698. identity: int,
  1699. ):
  1700. return awkward_reduce_max(
  1701. toptr,
  1702. fromptr,
  1703. fromptroffset,
  1704. parents,
  1705. parentsoffset,
  1706. lenparents,
  1707. outlength,
  1708. identity,
  1709. )
  1710.  
  1711.  
  1712. awkward_reduce_max_int32_int32_64
  1713. ----------------------------------------------------
  1714.  
  1715. def awkward_reduce_max_int32_int32_64(
  1716. toptr: List[int],
  1717. fromptr: List[int],
  1718. fromptroffset: int,
  1719. parents: List[int],
  1720. parentsoffset: int,
  1721. lenparents: int,
  1722. outlength: int,
  1723. identity: int,
  1724. ):
  1725. return awkward_reduce_max(
  1726. toptr,
  1727. fromptr,
  1728. fromptroffset,
  1729. parents,
  1730. parentsoffset,
  1731. lenparents,
  1732. outlength,
  1733. identity,
  1734. )
  1735.  
  1736.  
  1737. awkward_reduce_max_uint32_uint32_64
  1738. ----------------------------------------------------
  1739.  
  1740. def awkward_reduce_max_uint32_uint32_64(
  1741. toptr: List[int],
  1742. fromptr: List[int],
  1743. fromptroffset: int,
  1744. parents: List[int],
  1745. parentsoffset: int,
  1746. lenparents: int,
  1747. outlength: int,
  1748. identity: int,
  1749. ):
  1750. return awkward_reduce_max(
  1751. toptr,
  1752. fromptr,
  1753. fromptroffset,
  1754. parents,
  1755. parentsoffset,
  1756. lenparents,
  1757. outlength,
  1758. identity,
  1759. )
  1760.  
  1761.  
  1762. awkward_reduce_max_int64_int64_64
  1763. ----------------------------------------------------
  1764.  
  1765. def awkward_reduce_max_int64_int64_64(
  1766. toptr: List[int],
  1767. fromptr: List[int],
  1768. fromptroffset: int,
  1769. parents: List[int],
  1770. parentsoffset: int,
  1771. lenparents: int,
  1772. outlength: int,
  1773. identity: int,
  1774. ):
  1775. return awkward_reduce_max(
  1776. toptr,
  1777. fromptr,
  1778. fromptroffset,
  1779. parents,
  1780. parentsoffset,
  1781. lenparents,
  1782. outlength,
  1783. identity,
  1784. )
  1785.  
  1786.  
  1787. awkward_reduce_max_uint64_uint64_64
  1788. ----------------------------------------------------
  1789.  
  1790. def awkward_reduce_max_uint64_uint64_64(
  1791. toptr: List[int],
  1792. fromptr: List[int],
  1793. fromptroffset: int,
  1794. parents: List[int],
  1795. parentsoffset: int,
  1796. lenparents: int,
  1797. outlength: int,
  1798. identity: int,
  1799. ):
  1800. return awkward_reduce_max(
  1801. toptr,
  1802. fromptr,
  1803. fromptroffset,
  1804. parents,
  1805. parentsoffset,
  1806. lenparents,
  1807. outlength,
  1808. identity,
  1809. )
  1810.  
  1811.  
  1812. awkward_reduce_max_float32_float32_64
  1813. ----------------------------------------------------
  1814.  
  1815. def awkward_reduce_max_float32_float32_64(
  1816. toptr: List[float],
  1817. fromptr: List[float],
  1818. fromptroffset: int,
  1819. parents: List[int],
  1820. parentsoffset: int,
  1821. lenparents: int,
  1822. outlength: int,
  1823. identity: float,
  1824. ):
  1825. return awkward_reduce_max(
  1826. toptr,
  1827. fromptr,
  1828. fromptroffset,
  1829. parents,
  1830. parentsoffset,
  1831. lenparents,
  1832. outlength,
  1833. identity,
  1834. )
  1835.  
  1836.  
  1837. awkward_reduce_max_float64_float64_64
  1838. ----------------------------------------------------
  1839.  
  1840. def awkward_reduce_max_float64_float64_64(
  1841. toptr: List[double],
  1842. fromptr: List[double],
  1843. fromptroffset: int,
  1844. parents: List[int],
  1845. parentsoffset: int,
  1846. lenparents: int,
  1847. outlength: int,
  1848. identity: double,
  1849. ):
  1850. return awkward_reduce_max(
  1851. toptr,
  1852. fromptr,
  1853. fromptroffset,
  1854. parents,
  1855. parentsoffset,
  1856. lenparents,
  1857. outlength,
  1858. identity,
  1859. )
  1860.  
  1861.  
  1862. awkward_reduce_argmin
  1863. ----------------------------------------------------
  1864.  
  1865. for OUT in int:
  1866. for IN in (int, float):
  1867.  
  1868. def awkward_reduce_argmin(
  1869. toptr: List[OUT],
  1870. fromptr: List[IN],
  1871. fromptroffset: int,
  1872. starts: List[int],
  1873. startsoffset: int,
  1874. parents: List[int],
  1875. parentsoffset: int,
  1876. lenparents: int,
  1877. outlength: int,
  1878. ):
  1879. for i in range(outlength):
  1880. toptr[i] = -1
  1881. for i in range(lenparents):
  1882. parent = parents[parentsoffset + i]
  1883. start = starts[parent]
  1884. if (toptr[parent] == -1) or (
  1885. fromptr[fromptroffset + i]
  1886. < fromptr[(fromptroffset + toptr[parent]) + start]
  1887. ):
  1888. toptr[parent] = i - start
  1889. return
  1890.  
  1891.  
  1892. awkward_reduce_argmin_bool_64
  1893. ----------------------------------------------------
  1894.  
  1895. def awkward_reduce_argmin_bool_64(
  1896. toptr: List[int],
  1897. fromptr: List[bool],
  1898. fromptroffset: int,
  1899. starts: List[int],
  1900. startsoffset: int,
  1901. parents: List[int],
  1902. parentsoffset: int,
  1903. lenparents: int,
  1904. outlength: int,
  1905. ):
  1906. for i in range(outlength):
  1907. toptr[i] = -1
  1908. for i in range(lenparents):
  1909. parent = parents[parentsoffset + i]
  1910. start = starts[parent]
  1911. if (toptr[parent] == -1) or (
  1912. (fromptr[fromptroffset + i] != 0)
  1913. < (fromptr[(fromptroffset + toptr[parent]) + start] != 0)
  1914. ):
  1915. toptr[parent] = i - start
  1916. return
  1917.  
  1918.  
  1919. awkward_reduce_argmin_int8_64
  1920. ----------------------------------------------------
  1921.  
  1922. def awkward_reduce_argmin_int8_64(
  1923. toptr: List[int],
  1924. fromptr: List[int],
  1925. fromptroffset: int,
  1926. starts: List[int],
  1927. startsoffset: int,
  1928. parents: List[int],
  1929. parentsoffset: int,
  1930. lenparents: int,
  1931. outlength: int,
  1932. ):
  1933. return awkward_reduce_argmin(
  1934. toptr,
  1935. fromptr,
  1936. fromptroffset,
  1937. starts,
  1938. startsoffset,
  1939. parents,
  1940. parentsoffset,
  1941. lenparents,
  1942. outlength,
  1943. )
  1944.  
  1945.  
  1946. awkward_reduce_argmin_uint8_64
  1947. ----------------------------------------------------
  1948.  
  1949. def awkward_reduce_argmin_uint8_64(
  1950. toptr: List[int],
  1951. fromptr: List[int],
  1952. fromptroffset: int,
  1953. starts: List[int],
  1954. startsoffset: int,
  1955. parents: List[int],
  1956. parentsoffset: int,
  1957. lenparents: int,
  1958. outlength: int,
  1959. ):
  1960. return awkward_reduce_argmin(
  1961. toptr,
  1962. fromptr,
  1963. fromptroffset,
  1964. starts,
  1965. startsoffset,
  1966. parents,
  1967. parentsoffset,
  1968. lenparents,
  1969. outlength,
  1970. )
  1971.  
  1972.  
  1973. awkward_reduce_argmin_int16_64
  1974. ----------------------------------------------------
  1975.  
  1976. def awkward_reduce_argmin_int16_64(
  1977. toptr: List[int],
  1978. fromptr: List[int],
  1979. fromptroffset: int,
  1980. starts: List[int],
  1981. startsoffset: int,
  1982. parents: List[int],
  1983. parentsoffset: int,
  1984. lenparents: int,
  1985. outlength: int,
  1986. ):
  1987. return awkward_reduce_argmin(
  1988. toptr,
  1989. fromptr,
  1990. fromptroffset,
  1991. starts,
  1992. startsoffset,
  1993. parents,
  1994. parentsoffset,
  1995. lenparents,
  1996. outlength,
  1997. )
  1998.  
  1999.  
  2000. awkward_reduce_argmin_uint16_64
  2001. ----------------------------------------------------
  2002.  
  2003. def awkward_reduce_argmin_uint16_64(
  2004. toptr: List[int],
  2005. fromptr: List[int],
  2006. fromptroffset: int,
  2007. starts: List[int],
  2008. startsoffset: int,
  2009. parents: List[int],
  2010. parentsoffset: int,
  2011. lenparents: int,
  2012. outlength: int,
  2013. ):
  2014. return awkward_reduce_argmin(
  2015. toptr,
  2016. fromptr,
  2017. fromptroffset,
  2018. starts,
  2019. startsoffset,
  2020. parents,
  2021. parentsoffset,
  2022. lenparents,
  2023. outlength,
  2024. )
  2025.  
  2026.  
  2027. awkward_reduce_argmin_int32_64
  2028. ----------------------------------------------------
  2029.  
  2030. def awkward_reduce_argmin_int32_64(
  2031. toptr: List[int],
  2032. fromptr: List[int],
  2033. fromptroffset: int,
  2034. starts: List[int],
  2035. startsoffset: int,
  2036. parents: List[int],
  2037. parentsoffset: int,
  2038. lenparents: int,
  2039. outlength: int,
  2040. ):
  2041. return awkward_reduce_argmin(
  2042. toptr,
  2043. fromptr,
  2044. fromptroffset,
  2045. starts,
  2046. startsoffset,
  2047. parents,
  2048. parentsoffset,
  2049. lenparents,
  2050. outlength,
  2051. )
  2052.  
  2053.  
  2054. awkward_reduce_argmin_uint32_64
  2055. ----------------------------------------------------
  2056.  
  2057. def awkward_reduce_argmin_uint32_64(
  2058. toptr: List[int],
  2059. fromptr: List[int],
  2060. fromptroffset: int,
  2061. starts: List[int],
  2062. startsoffset: int,
  2063. parents: List[int],
  2064. parentsoffset: int,
  2065. lenparents: int,
  2066. outlength: int,
  2067. ):
  2068. return awkward_reduce_argmin(
  2069. toptr,
  2070. fromptr,
  2071. fromptroffset,
  2072. starts,
  2073. startsoffset,
  2074. parents,
  2075. parentsoffset,
  2076. lenparents,
  2077. outlength,
  2078. )
  2079.  
  2080.  
  2081. awkward_reduce_argmin_int64_64
  2082. ----------------------------------------------------
  2083.  
  2084. def awkward_reduce_argmin_int64_64(
  2085. toptr: List[int],
  2086. fromptr: List[int],
  2087. fromptroffset: int,
  2088. starts: List[int],
  2089. startsoffset: int,
  2090. parents: List[int],
  2091. parentsoffset: int,
  2092. lenparents: int,
  2093. outlength: int,
  2094. ):
  2095. return awkward_reduce_argmin(
  2096. toptr,
  2097. fromptr,
  2098. fromptroffset,
  2099. starts,
  2100. startsoffset,
  2101. parents,
  2102. parentsoffset,
  2103. lenparents,
  2104. outlength,
  2105. )
  2106.  
  2107.  
  2108. awkward_reduce_argmin_uint64_64
  2109. ----------------------------------------------------
  2110.  
  2111. def awkward_reduce_argmin_uint64_64(
  2112. toptr: List[int],
  2113. fromptr: List[int],
  2114. fromptroffset: int,
  2115. starts: List[int],
  2116. startsoffset: int,
  2117. parents: List[int],
  2118. parentsoffset: int,
  2119. lenparents: int,
  2120. outlength: int,
  2121. ):
  2122. return awkward_reduce_argmin(
  2123. toptr,
  2124. fromptr,
  2125. fromptroffset,
  2126. starts,
  2127. startsoffset,
  2128. parents,
  2129. parentsoffset,
  2130. lenparents,
  2131. outlength,
  2132. )
  2133.  
  2134.  
  2135. awkward_reduce_argmin_float32_64
  2136. ----------------------------------------------------
  2137.  
  2138. def awkward_reduce_argmin_float32_64(
  2139. toptr: List[int],
  2140. fromptr: List[float],
  2141. fromptroffset: int,
  2142. starts: List[int],
  2143. startsoffset: int,
  2144. parents: List[int],
  2145. parentsoffset: int,
  2146. lenparents: int,
  2147. outlength: int,
  2148. ):
  2149. return awkward_reduce_argmin(
  2150. toptr,
  2151. fromptr,
  2152. fromptroffset,
  2153. starts,
  2154. startsoffset,
  2155. parents,
  2156. parentsoffset,
  2157. lenparents,
  2158. outlength,
  2159. )
  2160.  
  2161.  
  2162. awkward_reduce_argmin_float64_64
  2163. ----------------------------------------------------
  2164.  
  2165. def awkward_reduce_argmin_float64_64(
  2166. toptr: List[int],
  2167. fromptr: List[double],
  2168. fromptroffset: int,
  2169. starts: List[int],
  2170. startsoffset: int,
  2171. parents: List[int],
  2172. parentsoffset: int,
  2173. lenparents: int,
  2174. outlength: int,
  2175. ):
  2176. return awkward_reduce_argmin(
  2177. toptr,
  2178. fromptr,
  2179. fromptroffset,
  2180. starts,
  2181. startsoffset,
  2182. parents,
  2183. parentsoffset,
  2184. lenparents,
  2185. outlength,
  2186. )
  2187.  
  2188.  
  2189. awkward_reduce_argmax
  2190. ----------------------------------------------------
  2191.  
  2192. for OUT in int:
  2193. for IN in (int, float):
  2194.  
  2195. def awkward_reduce_argmax(
  2196. toptr: List[OUT],
  2197. fromptr: List[IN],
  2198. fromptroffset: int,
  2199. starts: List[int],
  2200. startsoffset: int,
  2201. parents: List[int],
  2202. parentsoffset: int,
  2203. lenparents: int,
  2204. outlength: int,
  2205. ):
  2206. for i in range(outlength):
  2207. toptr[i] = -1
  2208. for i in range(lenparents):
  2209. parent = parents[parentsoffset + i]
  2210. start = starts[parent]
  2211. if (toptr[parent] == -1) or fromptr[
  2212. (fromptroffset + toptr[parent]) + start
  2213. ]:
  2214. toptr[parent] = i - start
  2215. return
  2216.  
  2217.  
  2218. awkward_reduce_argmax_bool_64
  2219. ----------------------------------------------------
  2220.  
  2221. def awkward_reduce_argmax_bool_64(
  2222. toptr: List[int],
  2223. fromptr: List[bool],
  2224. fromptroffset: int,
  2225. starts: List[int],
  2226. startsoffset: int,
  2227. parents: List[int],
  2228. parentsoffset: int,
  2229. lenparents: int,
  2230. outlength: int,
  2231. ):
  2232. for i in range(outlength):
  2233. toptr[i] = -1
  2234. for i in range(lenparents):
  2235. parent = parents[parentsoffset + i]
  2236. start = starts[parent]
  2237. if (toptr[parent] == -1) or (
  2238. (fromptr[fromptroffset + i] != 0)
  2239. > (fromptr[(fromptroffset + toptr[parent]) + start] != 0)
  2240. ):
  2241. toptr[parent] = i - start
  2242. return
  2243.  
  2244.  
  2245. awkward_reduce_argmax_int8_64
  2246. ----------------------------------------------------
  2247.  
  2248. def awkward_reduce_argmax_int8_64(
  2249. toptr: List[int],
  2250. fromptr: List[int],
  2251. fromptroffset: int,
  2252. starts: List[int],
  2253. startsoffset: int,
  2254. parents: List[int],
  2255. parentsoffset: int,
  2256. lenparents: int,
  2257. outlength: int,
  2258. ):
  2259. return awkward_reduce_argmax(
  2260. toptr,
  2261. fromptr,
  2262. fromptroffset,
  2263. starts,
  2264. startsoffset,
  2265. parents,
  2266. parentsoffset,
  2267. lenparents,
  2268. outlength,
  2269. )
  2270.  
  2271.  
  2272. awkward_reduce_argmax_uint8_64
  2273. ----------------------------------------------------
  2274.  
  2275. def awkward_reduce_argmax_uint8_64(
  2276. toptr: List[int],
  2277. fromptr: List[int],
  2278. fromptroffset: int,
  2279. starts: List[int],
  2280. startsoffset: int,
  2281. parents: List[int],
  2282. parentsoffset: int,
  2283. lenparents: int,
  2284. outlength: int,
  2285. ):
  2286. return awkward_reduce_argmax(
  2287. toptr,
  2288. fromptr,
  2289. fromptroffset,
  2290. starts,
  2291. startsoffset,
  2292. parents,
  2293. parentsoffset,
  2294. lenparents,
  2295. outlength,
  2296. )
  2297.  
  2298.  
  2299. awkward_reduce_argmax_int16_64
  2300. ----------------------------------------------------
  2301.  
  2302. def awkward_reduce_argmax_int16_64(
  2303. toptr: List[int],
  2304. fromptr: List[int],
  2305. fromptroffset: int,
  2306. starts: List[int],
  2307. startsoffset: int,
  2308. parents: List[int],
  2309. parentsoffset: int,
  2310. lenparents: int,
  2311. outlength: int,
  2312. ):
  2313. return awkward_reduce_argmax(
  2314. toptr,
  2315. fromptr,
  2316. fromptroffset,
  2317. starts,
  2318. startsoffset,
  2319. parents,
  2320. parentsoffset,
  2321. lenparents,
  2322. outlength,
  2323. )
  2324.  
  2325.  
  2326. awkward_reduce_argmax_uint16_64
  2327. ----------------------------------------------------
  2328.  
  2329. def awkward_reduce_argmax_uint16_64(
  2330. toptr: List[int],
  2331. fromptr: List[int],
  2332. fromptroffset: int,
  2333. starts: List[int],
  2334. startsoffset: int,
  2335. parents: List[int],
  2336. parentsoffset: int,
  2337. lenparents: int,
  2338. outlength: int,
  2339. ):
  2340. return awkward_reduce_argmax(
  2341. toptr,
  2342. fromptr,
  2343. fromptroffset,
  2344. starts,
  2345. startsoffset,
  2346. parents,
  2347. parentsoffset,
  2348. lenparents,
  2349. outlength,
  2350. )
  2351.  
  2352.  
  2353. awkward_reduce_argmax_int32_64
  2354. ----------------------------------------------------
  2355.  
  2356. def awkward_reduce_argmax_int32_64(
  2357. toptr: List[int],
  2358. fromptr: List[int],
  2359. fromptroffset: int,
  2360. starts: List[int],
  2361. startsoffset: int,
  2362. parents: List[int],
  2363. parentsoffset: int,
  2364. lenparents: int,
  2365. outlength: int,
  2366. ):
  2367. return awkward_reduce_argmax(
  2368. toptr,
  2369. fromptr,
  2370. fromptroffset,
  2371. starts,
  2372. startsoffset,
  2373. parents,
  2374. parentsoffset,
  2375. lenparents,
  2376. outlength,
  2377. )
  2378.  
  2379.  
  2380. awkward_reduce_argmax_uint32_64
  2381. ----------------------------------------------------
  2382.  
  2383. def awkward_reduce_argmax_uint32_64(
  2384. toptr: List[int],
  2385. fromptr: List[int],
  2386. fromptroffset: int,
  2387. starts: List[int],
  2388. startsoffset: int,
  2389. parents: List[int],
  2390. parentsoffset: int,
  2391. lenparents: int,
  2392. outlength: int,
  2393. ):
  2394. return awkward_reduce_argmax(
  2395. toptr,
  2396. fromptr,
  2397. fromptroffset,
  2398. starts,
  2399. startsoffset,
  2400. parents,
  2401. parentsoffset,
  2402. lenparents,
  2403. outlength,
  2404. )
  2405.  
  2406.  
  2407. awkward_reduce_argmax_int64_64
  2408. ----------------------------------------------------
  2409.  
  2410. def awkward_reduce_argmax_int64_64(
  2411. toptr: List[int],
  2412. fromptr: List[int],
  2413. fromptroffset: int,
  2414. starts: List[int],
  2415. startsoffset: int,
  2416. parents: List[int],
  2417. parentsoffset: int,
  2418. lenparents: int,
  2419. outlength: int,
  2420. ):
  2421. return awkward_reduce_argmax(
  2422. toptr,
  2423. fromptr,
  2424. fromptroffset,
  2425. starts,
  2426. startsoffset,
  2427. parents,
  2428. parentsoffset,
  2429. lenparents,
  2430. outlength,
  2431. )
  2432.  
  2433.  
  2434. awkward_reduce_argmax_uint64_64
  2435. ----------------------------------------------------
  2436.  
  2437. def awkward_reduce_argmax_uint64_64(
  2438. toptr: List[int],
  2439. fromptr: List[int],
  2440. fromptroffset: int,
  2441. starts: List[int],
  2442. startsoffset: int,
  2443. parents: List[int],
  2444. parentsoffset: int,
  2445. lenparents: int,
  2446. outlength: int,
  2447. ):
  2448. return awkward_reduce_argmax(
  2449. toptr,
  2450. fromptr,
  2451. fromptroffset,
  2452. starts,
  2453. startsoffset,
  2454. parents,
  2455. parentsoffset,
  2456. lenparents,
  2457. outlength,
  2458. )
  2459.  
  2460.  
  2461. awkward_reduce_argmax_float32_64
  2462. ----------------------------------------------------
  2463.  
  2464. def awkward_reduce_argmax_float32_64(
  2465. toptr: List[int],
  2466. fromptr: List[float],
  2467. fromptroffset: int,
  2468. starts: List[int],
  2469. startsoffset: int,
  2470. parents: List[int],
  2471. parentsoffset: int,
  2472. lenparents: int,
  2473. outlength: int,
  2474. ):
  2475. return awkward_reduce_argmax(
  2476. toptr,
  2477. fromptr,
  2478. fromptroffset,
  2479. starts,
  2480. startsoffset,
  2481. parents,
  2482. parentsoffset,
  2483. lenparents,
  2484. outlength,
  2485. )
  2486.  
  2487.  
  2488. awkward_reduce_argmax_float64_64
  2489. ----------------------------------------------------
  2490.  
  2491. def awkward_reduce_argmax_float64_64(
  2492. toptr: List[int],
  2493. fromptr: List[double],
  2494. fromptroffset: int,
  2495. starts: List[int],
  2496. startsoffset: int,
  2497. parents: List[int],
  2498. parentsoffset: int,
  2499. lenparents: int,
  2500. outlength: int,
  2501. ):
  2502. return awkward_reduce_argmax(
  2503. toptr,
  2504. fromptr,
  2505. fromptroffset,
  2506. starts,
  2507. startsoffset,
  2508. parents,
  2509. parentsoffset,
  2510. lenparents,
  2511. outlength,
  2512. )
  2513.  
  2514.  
  2515. awkward_content_reduce_zeroparents_64
  2516. ----------------------------------------------------
  2517.  
  2518. def awkward_content_reduce_zeroparents_64(toparents: List[int], length: int):
  2519. for i in range(length):
  2520. toparents[i] = 0
  2521. return
  2522.  
  2523.  
  2524. awkward_listoffsetarray_reduce_global_startstop_64
  2525. ----------------------------------------------------
  2526.  
  2527. def awkward_listoffsetarray_reduce_global_startstop_64(
  2528. globalstart: List[int],
  2529. globalstop: List[int],
  2530. offsets: List[int],
  2531. offsetsoffset: int,
  2532. length: int,
  2533. ):
  2534. globalstart = offsets[offsetsoffset + 0]
  2535. globalstop = offsets[offsetsoffset + length]
  2536. return
  2537.  
  2538.  
  2539. awkward_listoffsetarray_reduce_nonlocal_maxcount_offsetscopy_64
  2540. ----------------------------------------------------
  2541.  
  2542. def awkward_listoffsetarray_reduce_nonlocal_maxcount_offsetscopy_64(
  2543. maxcount: List[int],
  2544. offsetscopy: List[int],
  2545. offsets: List[int],
  2546. offsetsoffset: int,
  2547. length: int,
  2548. ):
  2549. maxcount = 0
  2550. offsetscopy[0] = offsets[offsetsoffset + 0]
  2551. for i in range(length):
  2552. count = offsets[(offsetsoffset + i) + 1] - offsets[offsetsoffset + i]
  2553. if maxcount < count:
  2554. maxcount = count
  2555. offsetscopy[i + 1] = offsets[(offsetsoffset + i) + 1]
  2556. return
  2557.  
  2558.  
  2559. awkward_listoffsetarray_reduce_nonlocal_preparenext_64
  2560. ----------------------------------------------------
  2561.  
  2562. def awkward_listoffsetarray_reduce_nonlocal_preparenext_64(
  2563. nextcarry: List[int],
  2564. nextparents: List[int],
  2565. nextlen: int,
  2566. maxnextparents: List[int],
  2567. distincts: List[int],
  2568. distinctslen: int,
  2569. offsetscopy: List[int],
  2570. offsets: List[int],
  2571. offsetsoffset: int,
  2572. length: int,
  2573. parents: List[int],
  2574. parentsoffset: int,
  2575. maxcount: int,
  2576. ):
  2577. maxnextparents = 0
  2578. for i in range(distinctslen):
  2579. distincts[i] = -1
  2580. k = 0
  2581. while k < nextlen:
  2582. j = 0
  2583. for i in range(length):
  2584. if offsetscopy[i] < offsets[(offsetsoffset + i) + 1]:
  2585. count = offsets[(offsetsoffset + i) + 1] - offsets[offsetsoffset + i]
  2586. diff = offsetscopy[i] - offsets[offsetsoffset + i]
  2587. parent = parents[parentsoffset + i]
  2588. nextcarry[k] = offsetscopy[i]
  2589. nextparents[k] = (parent * maxcount) + diff
  2590. if maxnextparents < nextparents[k]:
  2591. maxnextparents = nextparents[k]
  2592. if distincts[nextparents[k]] == -1:
  2593. distincts[nextparents[k]] = j
  2594. j = j + 1
  2595. k = k + 1
  2596. offsetscopy[i] = offsetscopy[i] + 1
  2597. return
  2598.  
  2599.  
  2600. awkward_listoffsetarray_reduce_nonlocal_nextstarts_64
  2601. ----------------------------------------------------
  2602.  
  2603. def awkward_listoffsetarray_reduce_nonlocal_nextstarts_64(
  2604. nextstarts: List[int], nextparents: List[int], nextlen: int
  2605. ):
  2606. lastnextparent = -1
  2607. for k in range(nextlen):
  2608. if nextparents[k] != lastnextparent:
  2609. nextstarts[nextparents[k]] = k
  2610. lastnextparent = nextparents[k]
  2611. return
  2612.  
  2613.  
  2614. awkward_listoffsetarray_reduce_nonlocal_findgaps_64
  2615. ----------------------------------------------------
  2616.  
  2617. def awkward_listoffsetarray_reduce_nonlocal_findgaps_64(
  2618. gaps: List[int], parents: List[int], parentsoffset: int, lenparents: int
  2619. ):
  2620. k = 0
  2621. last = -1
  2622. for i in range(lenparents):
  2623. parent = parents[parentsoffset + i]
  2624. if last < parent:
  2625. gaps[k] = parent - last
  2626. k = k + 1
  2627. last = parent
  2628. return
  2629.  
  2630.  
  2631. awkward_listoffsetarray_reduce_nonlocal_outstartsstops_64
  2632. ----------------------------------------------------
  2633.  
  2634. def awkward_listoffsetarray_reduce_nonlocal_outstartsstops_64(
  2635. outstarts: List[int],
  2636. outstops: List[int],
  2637. distincts: List[int],
  2638. lendistincts: int,
  2639. gaps: List[int],
  2640. outlength: int,
  2641. ):
  2642. j = 0
  2643. k = 0
  2644. maxdistinct = -1
  2645. for i in range(lendistincts):
  2646. if maxdistinct < distincts[i]:
  2647. maxdistinct = distincts[i]
  2648. for gappy in range(gaps[j]):
  2649. outstarts[k] = i
  2650. outstops[k] = i
  2651. k = k + 1
  2652. j = j + 1
  2653. if distincts[i] != -1:
  2654. outstops[k - 1] = i + 1
  2655. while k < outlength:
  2656. outstarts[k] = lendistincts + 1
  2657. outstops[k] = lendistincts + 1
  2658. k = k + 1
  2659. return
  2660.  
  2661.  
  2662. awkward_listoffsetarray_reduce_local_nextparents_64
  2663. ----------------------------------------------------
  2664.  
  2665. def awkward_listoffsetarray_reduce_local_nextparents_64(
  2666. nextparents: List[int], offsets: List[int], offsetsoffset: int, length: int
  2667. ):
  2668. initialoffset = offsets[offsetsoffset]
  2669. for i in range(length):
  2670. j = offsets[offsetsoffset + i] - initialoffset
  2671. while j < (offsets[(offsetsoffset + i) + 1] - initialoffset):
  2672. nextparents[j] = i
  2673. j = j + 1
  2674. return
  2675.  
  2676.  
  2677. awkward_listoffsetarray_reduce_local_outoffsets_64
  2678. ----------------------------------------------------
  2679.  
  2680. def awkward_listoffsetarray_reduce_local_outoffsets_64(
  2681. outoffsets: List[int],
  2682. parents: List[int],
  2683. parentsoffset: int,
  2684. lenparents: int,
  2685. outlength: int,
  2686. ):
  2687. k = 0
  2688. last = -1
  2689. for i in range(lenparents):
  2690. while last < parents[parentsoffset + i]:
  2691. outoffsets[k] = i
  2692. k = k + 1
  2693. last = last + 1
  2694.  
  2695. while k <= outlength:
  2696. outoffsets[k] = lenparents
  2697. k = k + 1
  2698. return
  2699.  
  2700.  
  2701. awkward_indexedarray_reduce_next_64
  2702. ----------------------------------------------------
  2703.  
  2704. for T in int:
  2705.  
  2706. def awkward_indexedarray_reduce_next_64(
  2707. nextcarry: List[int],
  2708. nextparents: List[int],
  2709. outindex: List[int],
  2710. index: List[T],
  2711. indexoffset: int,
  2712. parents: List[int],
  2713. parentsoffset: int,
  2714. length: int,
  2715. ):
  2716. k = 0
  2717. for i in range(length):
  2718. if index[indexoffset + i] >= 0:
  2719. nextcarry[k] = index[indexoffset + i]
  2720. nextparents[k] = parents[parentsoffset + i]
  2721. outindex[i] = k
  2722. k = k + 1
  2723. else:
  2724. outindex[i] = -1
  2725. return
  2726.  
  2727.  
  2728. awkward_indexedarray32_reduce_next_64
  2729. ----------------------------------------------------
  2730.  
  2731. def awkward_indexedarray32_reduce_next_64(
  2732. nextcarry: List[int],
  2733. nextparents: List[int],
  2734. outindex: List[int],
  2735. index: List[int],
  2736. indexoffset: int,
  2737. parents: List[int],
  2738. parentsoffset: int,
  2739. length: int,
  2740. ):
  2741. return awkward_indexedarray_reduce_next_64(
  2742. nextcarry,
  2743. nextparents,
  2744. outindex,
  2745. index,
  2746. indexoffset,
  2747. parents,
  2748. parentsoffset,
  2749. length,
  2750. )
  2751.  
  2752.  
  2753. awkward_indexedarrayU32_reduce_next_64
  2754. ----------------------------------------------------
  2755.  
  2756. def awkward_indexedarrayU32_reduce_next_64(
  2757. nextcarry: List[int],
  2758. nextparents: List[int],
  2759. outindex: List[int],
  2760. index: List[int],
  2761. indexoffset: int,
  2762. parents: List[int],
  2763. parentsoffset: int,
  2764. length: int,
  2765. ):
  2766. return awkward_indexedarray_reduce_next_64(
  2767. nextcarry,
  2768. nextparents,
  2769. outindex,
  2770. index,
  2771. indexoffset,
  2772. parents,
  2773. parentsoffset,
  2774. length,
  2775. )
  2776.  
  2777.  
  2778. awkward_indexedarray64_reduce_next_64
  2779. ----------------------------------------------------
  2780.  
  2781. def awkward_indexedarray64_reduce_next_64(
  2782. nextcarry: List[int],
  2783. nextparents: List[int],
  2784. outindex: List[int],
  2785. index: List[int],
  2786. indexoffset: int,
  2787. parents: List[int],
  2788. parentsoffset: int,
  2789. length: int,
  2790. ):
  2791. return awkward_indexedarray_reduce_next_64(
  2792. nextcarry,
  2793. nextparents,
  2794. outindex,
  2795. index,
  2796. indexoffset,
  2797. parents,
  2798. parentsoffset,
  2799. length,
  2800. )
  2801.  
  2802.  
  2803. awkward_indexedarray_reduce_next_fix_offsets_64
  2804. ----------------------------------------------------
  2805.  
  2806. def awkward_indexedarray_reduce_next_fix_offsets_64(
  2807. outoffsets: List[int],
  2808. starts: List[int],
  2809. startsoffset: int,
  2810. startslength: int,
  2811. outindexlength: int,
  2812. ):
  2813. for i in range(startslength):
  2814. outoffsets[i] = starts[startsoffset + i]
  2815. outoffsets[startsoffset + startslength] = outindexlength
  2816. return
  2817.  
  2818.  
  2819. awkward_numpyarray_reduce_mask_bytemaskedarray
  2820. ----------------------------------------------------
  2821.  
  2822. def awkward_numpyarray_reduce_mask_bytemaskedarray(
  2823. toptr: List[int],
  2824. parents: List[int],
  2825. parentsoffset: int,
  2826. lenparents: int,
  2827. outlength: int,
  2828. ):
  2829. for i in range(outlength):
  2830. toptr[i] = 1
  2831. for i in range(lenparents):
  2832. toptr[parents[parentsoffset + i]] = 0
  2833. return
  2834.  
  2835.  
  2836. awkward_bytemaskedarray_reduce_next_64
  2837. ----------------------------------------------------
  2838.  
  2839. def awkward_bytemaskedarray_reduce_next_64(
  2840. nextcarry: List[int],
  2841. nextparents: List[int],
  2842. outindex: List[int],
  2843. mask: List[int],
  2844. maskoffset: int,
  2845. parents: List[int],
  2846. parentsoffset: int,
  2847. length: int,
  2848. validwhen: bool,
  2849. ):
  2850. k = 0
  2851. for i in range(length):
  2852. if (mask[maskoffset + i] != 0) == validwhen:
  2853. nextcarry[k] = i
  2854. nextparents[k] = parents[parentsoffset + i]
  2855. outindex[i] = k
  2856. k = k + 1
  2857. else:
  2858. outindex[i] = -1
  2859. return
Add Comment
Please, Sign In to add comment