functionalscript 0.3.3 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. package/com/cpp/module.f.d.ts +10 -0
  2. package/com/cpp/module.f.js +107 -0
  3. package/com/cpp/test.f.d.ts +2 -0
  4. package/com/cpp/{test.f.ts → test.f.js} +9 -11
  5. package/com/cpp/testlib.f.d.ts +2 -0
  6. package/com/cpp/testlib.f.js +5 -0
  7. package/com/cs/module.f.d.ts +12 -0
  8. package/com/cs/module.f.js +80 -0
  9. package/com/cs/test.f.d.ts +2 -0
  10. package/com/cs/{test.f.ts → test.f.js} +9 -11
  11. package/com/cs/testlib.f.d.ts +2 -0
  12. package/com/cs/testlib.f.js +5 -0
  13. package/com/rust/module.f.d.ts +15 -0
  14. package/com/rust/module.f.js +169 -0
  15. package/com/rust/test.f.d.ts +2 -0
  16. package/com/rust/{test.f.ts → test.f.js} +7 -7
  17. package/com/rust/testlib.f.d.ts +2 -0
  18. package/com/rust/testlib.f.js +5 -0
  19. package/com/test/build.f.d.ts +20 -0
  20. package/com/test/build.f.js +58 -0
  21. package/com/types/module.f.d.ts +28 -0
  22. package/com/types/module.f.js +8 -0
  23. package/com/types/testlib.f.d.ts +44 -0
  24. package/com/types/{testlib.f.ts → testlib.f.js} +2 -3
  25. package/commonjs/build/module.f.d.ts +6 -0
  26. package/commonjs/build/module.f.js +69 -0
  27. package/commonjs/build/test.f.d.ts +2 -0
  28. package/commonjs/build/test.f.js +96 -0
  29. package/commonjs/module/function/{module.f.ts → module.f.d.ts} +5 -10
  30. package/commonjs/module/function/module.f.js +4 -0
  31. package/commonjs/module/module.f.d.ts +18 -0
  32. package/commonjs/module/module.f.js +12 -0
  33. package/commonjs/module.f.d.ts +6 -0
  34. package/commonjs/module.f.js +1 -0
  35. package/commonjs/package/dependencies/module.f.d.ts +7 -0
  36. package/commonjs/package/dependencies/module.f.js +13 -0
  37. package/commonjs/package/dependencies/test.f.d.ts +2 -0
  38. package/commonjs/package/dependencies/test.f.js +15 -0
  39. package/commonjs/package/module.f.d.ts +17 -0
  40. package/commonjs/package/module.f.js +18 -0
  41. package/commonjs/package/test.f.d.ts +2 -0
  42. package/commonjs/package/test.f.js +27 -0
  43. package/commonjs/path/module.f.d.ts +24 -0
  44. package/commonjs/path/module.f.js +114 -0
  45. package/commonjs/path/test.f.d.ts +25 -0
  46. package/commonjs/path/{test.f.ts → test.f.js} +123 -89
  47. package/crypto/prime_field/module.f.d.ts +43 -0
  48. package/crypto/prime_field/module.f.js +78 -0
  49. package/crypto/prime_field/test.f.d.ts +13 -0
  50. package/crypto/prime_field/test.f.js +149 -0
  51. package/crypto/secp/module.f.d.ts +68 -0
  52. package/crypto/secp/module.f.js +127 -0
  53. package/crypto/secp/test.f.d.ts +5 -0
  54. package/crypto/secp/test.f.js +72 -0
  55. package/crypto/sha2/module.f.d.ts +13 -0
  56. package/crypto/sha2/module.f.js +145 -0
  57. package/crypto/sha2/test.f.d.ts +9 -0
  58. package/crypto/sha2/test.f.js +82 -0
  59. package/dev/module.f.d.ts +1 -0
  60. package/dev/module.f.js +1 -0
  61. package/dev/test/module.f.d.ts +20 -0
  62. package/dev/test/module.f.js +75 -0
  63. package/dev/test.f.d.ts +9 -0
  64. package/dev/{test.f.ts → test.f.js} +22 -24
  65. package/djs/module.f.d.ts +17 -0
  66. package/djs/module.f.js +63 -0
  67. package/djs/parser/module.f.d.ts +12 -0
  68. package/djs/parser/module.f.js +333 -0
  69. package/djs/parser/test.f.d.ts +12 -0
  70. package/djs/parser/test.f.js +717 -0
  71. package/djs/serializer/module.f.d.ts +9 -0
  72. package/djs/serializer/module.f.js +81 -0
  73. package/djs/test/input.f.d.ts +2 -0
  74. package/djs/test/input.f.js +4 -0
  75. package/djs/test/m.f.d.ts +2 -0
  76. package/djs/test/m.f.js +1 -0
  77. package/djs/test.f.d.ts +12 -0
  78. package/djs/test.f.js +84 -0
  79. package/djs/tokenizer/module.f.d.ts +8 -0
  80. package/djs/tokenizer/module.f.js +60 -0
  81. package/djs/tokenizer/test.f.d.ts +7 -0
  82. package/djs/tokenizer/test.f.js +529 -0
  83. package/fsc/module.f.d.ts +5 -0
  84. package/fsc/module.f.js +75 -0
  85. package/fsc/test.f.d.ts +4 -0
  86. package/fsc/test.f.js +19 -0
  87. package/fsm/module.f.d.ts +13 -0
  88. package/fsm/module.f.js +59 -0
  89. package/fsm/test.f.d.ts +5 -0
  90. package/fsm/test.f.js +137 -0
  91. package/html/module.f.d.ts +13 -0
  92. package/html/module.f.js +58 -0
  93. package/html/test.f.d.ts +9 -0
  94. package/html/test.f.js +42 -0
  95. package/issues/test.f.d.ts +16 -0
  96. package/issues/test.f.js +70 -0
  97. package/js/tokenizer/module.f.d.ts +86 -0
  98. package/js/tokenizer/module.f.js +503 -0
  99. package/js/tokenizer/test.f.d.ts +9 -0
  100. package/js/tokenizer/test.f.js +905 -0
  101. package/json/module.f.d.ts +20 -0
  102. package/json/module.f.js +68 -0
  103. package/json/parser/module.f.d.ts +5 -0
  104. package/json/parser/module.f.js +155 -0
  105. package/json/parser/test.f.d.ts +5 -0
  106. package/json/parser/test.f.js +328 -0
  107. package/json/serializer/module.f.d.ts +7 -0
  108. package/json/serializer/module.f.js +21 -0
  109. package/json/serializer/test.f.d.ts +8 -0
  110. package/json/serializer/test.f.js +87 -0
  111. package/json/test.f.d.ts +8 -0
  112. package/json/test.f.js +61 -0
  113. package/json/tokenizer/module.f.d.ts +8 -0
  114. package/json/tokenizer/module.f.js +52 -0
  115. package/json/tokenizer/test.f.d.ts +6 -0
  116. package/json/tokenizer/test.f.js +419 -0
  117. package/nanvm-lib/tests/test.f.d.ts +27 -0
  118. package/nanvm-lib/tests/test.f.js +84 -0
  119. package/nodejs/version/module.f.d.ts +11 -0
  120. package/nodejs/version/module.f.js +16 -0
  121. package/nodejs/version/test.f.d.ts +2 -0
  122. package/nodejs/version/{test.f.ts → test.f.js} +13 -22
  123. package/package.json +9 -5
  124. package/text/ascii/module.f.d.ts +129 -0
  125. package/text/ascii/module.f.js +148 -0
  126. package/text/ascii/test.f.d.ts +4 -0
  127. package/text/ascii/test.f.js +14 -0
  128. package/text/module.f.d.ts +8 -0
  129. package/text/module.f.js +10 -0
  130. package/text/sgr/module.f.d.ts +8 -0
  131. package/text/sgr/module.f.js +8 -0
  132. package/text/test.f.d.ts +2 -0
  133. package/text/test.f.js +18 -0
  134. package/text/utf16/module.f.d.ts +9 -0
  135. package/text/utf16/module.f.js +66 -0
  136. package/text/utf16/test.f.d.ts +6 -0
  137. package/text/utf16/test.f.js +144 -0
  138. package/text/utf8/module.f.d.ts +6 -0
  139. package/text/utf8/module.f.js +112 -0
  140. package/text/utf8/test.f.d.ts +6 -0
  141. package/text/utf8/test.f.js +175 -0
  142. package/types/array/module.f.d.ts +21 -0
  143. package/types/array/module.f.js +23 -0
  144. package/types/array/test.f.d.ts +10 -0
  145. package/types/array/test.f.js +116 -0
  146. package/types/bigfloat/module.f.d.ts +3 -0
  147. package/types/bigfloat/module.f.js +66 -0
  148. package/types/bigfloat/test.f.d.ts +6 -0
  149. package/types/bigfloat/test.f.js +349 -0
  150. package/types/bigint/module.f.d.ts +54 -0
  151. package/types/bigint/{module.f.ts → module.f.js} +42 -65
  152. package/types/bigint/test.f.d.ts +16 -0
  153. package/types/bigint/test.f.js +199 -0
  154. package/types/bit_vec/module.f.d.ts +134 -0
  155. package/types/bit_vec/{module.f.ts → module.f.js} +47 -65
  156. package/types/bit_vec/test.f.d.ts +22 -0
  157. package/types/bit_vec/test.f.js +210 -0
  158. package/types/btree/find/module.f.d.ts +20 -0
  159. package/types/btree/find/module.f.js +84 -0
  160. package/types/btree/find/test.f.d.ts +2 -0
  161. package/types/btree/find/test.f.js +152 -0
  162. package/types/btree/module.f.d.ts +4 -0
  163. package/types/btree/module.f.js +31 -0
  164. package/types/btree/remove/module.f.d.ts +4 -0
  165. package/types/btree/remove/module.f.js +174 -0
  166. package/types/btree/remove/test.f.d.ts +5 -0
  167. package/types/btree/remove/test.f.js +634 -0
  168. package/types/btree/set/module.f.d.ts +3 -0
  169. package/types/btree/set/module.f.js +103 -0
  170. package/types/btree/set/test.f.d.ts +2 -0
  171. package/types/btree/set/test.f.js +360 -0
  172. package/types/btree/test.f.d.ts +8 -0
  173. package/types/btree/test.f.js +75 -0
  174. package/types/btree/types/module.f.d.ts +11 -0
  175. package/types/btree/types/module.f.js +1 -0
  176. package/types/byte_set/module.f.d.ts +16 -0
  177. package/types/byte_set/module.f.js +28 -0
  178. package/types/byte_set/test.f.d.ts +12 -0
  179. package/types/byte_set/test.f.js +122 -0
  180. package/types/function/compare/module.f.d.ts +10 -0
  181. package/types/function/compare/module.f.js +7 -0
  182. package/types/function/compare/test.f.d.ts +2 -0
  183. package/types/function/compare/test.f.js +8 -0
  184. package/types/function/module.f.d.ts +28 -0
  185. package/types/function/module.f.js +19 -0
  186. package/types/function/operator/module.f.d.ts +20 -0
  187. package/types/function/operator/module.f.js +18 -0
  188. package/types/function/test.f.d.ts +2 -0
  189. package/types/function/test.f.js +12 -0
  190. package/types/list/module.f.d.ts +50 -0
  191. package/types/list/module.f.js +171 -0
  192. package/types/list/test.f.d.ts +22 -0
  193. package/types/list/test.f.js +395 -0
  194. package/types/map/module.f.d.ts +14 -0
  195. package/types/map/module.f.js +31 -0
  196. package/types/map/test.f.d.ts +5 -0
  197. package/types/map/test.f.js +114 -0
  198. package/types/nibble_set/module.f.d.ts +10 -0
  199. package/types/nibble_set/module.f.js +9 -0
  200. package/types/nibble_set/test.f.d.ts +12 -0
  201. package/types/nibble_set/test.f.js +90 -0
  202. package/types/nullable/module.f.d.ts +3 -0
  203. package/types/nullable/module.f.js +2 -0
  204. package/types/nullable/test.f.d.ts +2 -0
  205. package/types/nullable/test.f.js +12 -0
  206. package/types/number/module.f.d.ts +6 -0
  207. package/types/number/module.f.js +8 -0
  208. package/types/number/test.f.d.ts +11 -0
  209. package/types/number/test.f.js +124 -0
  210. package/types/object/module.f.d.ts +10 -0
  211. package/types/object/module.f.js +12 -0
  212. package/types/object/test.f.d.ts +5 -0
  213. package/types/object/test.f.js +17 -0
  214. package/types/range/module.f.d.ts +3 -0
  215. package/types/range/module.f.js +2 -0
  216. package/types/range/test.f.d.ts +2 -0
  217. package/types/range/test.f.js +18 -0
  218. package/types/range_map/module.f.d.ts +14 -0
  219. package/types/range_map/module.f.js +51 -0
  220. package/types/range_map/test.f.d.ts +6 -0
  221. package/types/range_map/test.f.js +176 -0
  222. package/types/result/module.f.d.ts +7 -0
  223. package/types/result/module.f.js +8 -0
  224. package/types/sorted_list/module.f.d.ts +16 -0
  225. package/types/sorted_list/module.f.js +56 -0
  226. package/types/sorted_list/test.f.d.ts +5 -0
  227. package/types/sorted_list/test.f.js +64 -0
  228. package/types/sorted_set/module.f.d.ts +7 -0
  229. package/types/sorted_set/module.f.js +14 -0
  230. package/types/sorted_set/test.f.d.ts +6 -0
  231. package/types/sorted_set/test.f.js +78 -0
  232. package/types/string/module.f.d.ts +6 -0
  233. package/types/string/module.f.js +11 -0
  234. package/types/string/test.f.d.ts +15 -0
  235. package/types/string/test.f.js +58 -0
  236. package/types/string_set/module.f.d.ts +9 -0
  237. package/types/string_set/module.f.js +22 -0
  238. package/types/string_set/test.f.d.ts +5 -0
  239. package/types/string_set/test.f.js +65 -0
  240. package/.github/FUNDING.yml +0 -12
  241. package/.github/dependabot.yml +0 -11
  242. package/.github/workflows/ci.yml +0 -88
  243. package/.github/workflows/npm-publish.yml +0 -53
  244. package/CHANGELOG.md +0 -29
  245. package/Cargo.lock +0 -18
  246. package/Cargo.toml +0 -7
  247. package/com/README.md +0 -3
  248. package/com/cpp/README.md +0 -80
  249. package/com/cpp/module.f.ts +0 -180
  250. package/com/cpp/nanocom.hpp +0 -195
  251. package/com/cpp/testlib.f.ts +0 -8
  252. package/com/cs/module.f.ts +0 -145
  253. package/com/cs/testlib.f.ts +0 -8
  254. package/com/proposals.md +0 -28
  255. package/com/rust/module.f.ts +0 -287
  256. package/com/rust/nanocom/Cargo.lock +0 -7
  257. package/com/rust/nanocom/Cargo.toml +0 -15
  258. package/com/rust/nanocom/README.md +0 -56
  259. package/com/rust/nanocom/src/class.rs +0 -6
  260. package/com/rust/nanocom/src/cobject.rs +0 -90
  261. package/com/rust/nanocom/src/guid.rs +0 -15
  262. package/com/rust/nanocom/src/hresult.rs +0 -7
  263. package/com/rust/nanocom/src/interface.rs +0 -9
  264. package/com/rust/nanocom/src/iunknown.rs +0 -13
  265. package/com/rust/nanocom/src/lib.rs +0 -20
  266. package/com/rust/nanocom/src/object.rs +0 -34
  267. package/com/rust/nanocom/src/ref.rs +0 -57
  268. package/com/rust/nanocom/src/vmt.rs +0 -7
  269. package/com/rust/nanocom/tests/it.rs +0 -186
  270. package/com/rust/nanocom/tests/itmod.rs +0 -195
  271. package/com/rust/testlib.f.ts +0 -8
  272. package/com/test/build.f.ts +0 -111
  273. package/com/test/build.ts +0 -45
  274. package/com/test/cpp/main.cpp +0 -74
  275. package/com/test/cs/Program.cs +0 -31
  276. package/com/test/cs/cs.csproj +0 -16
  277. package/com/test/rust/Cargo.toml +0 -12
  278. package/com/test/rust/src/lib.rs +0 -56
  279. package/com/types/module.f.ts +0 -62
  280. package/commonjs/README.md +0 -94
  281. package/commonjs/build/module.f.ts +0 -100
  282. package/commonjs/build/test.f.ts +0 -107
  283. package/commonjs/module/module.f.ts +0 -41
  284. package/commonjs/module.f.ts +0 -7
  285. package/commonjs/module.ts +0 -31
  286. package/commonjs/package/dependencies/module.f.ts +0 -22
  287. package/commonjs/package/dependencies/test.f.ts +0 -8
  288. package/commonjs/package/module.f.ts +0 -31
  289. package/commonjs/package/test.f.ts +0 -12
  290. package/commonjs/path/README.md +0 -17
  291. package/commonjs/path/module.f.ts +0 -171
  292. package/commonjs/test.ts +0 -64
  293. package/crypto/README.md +0 -3
  294. package/crypto/prime_field/module.f.ts +0 -114
  295. package/crypto/prime_field/test.f.ts +0 -95
  296. package/crypto/secp/module.f.ts +0 -182
  297. package/crypto/secp/test.f.ts +0 -68
  298. package/crypto/sha2/module.f.ts +0 -215
  299. package/crypto/sha2/test.f.ts +0 -83
  300. package/deno.json +0 -71
  301. package/dev/README.md +0 -8
  302. package/dev/index.ts +0 -3
  303. package/dev/module.f.ts +0 -1
  304. package/dev/module.ts +0 -196
  305. package/dev/test/module.f.ts +0 -135
  306. package/dev/test.ts +0 -53
  307. package/djs/README.md +0 -54
  308. package/djs/module.f.ts +0 -76
  309. package/djs/parser/module.f.ts +0 -509
  310. package/djs/parser/test.f.ts +0 -461
  311. package/djs/serializer/module.f.ts +0 -90
  312. package/djs/test.f.ts +0 -67
  313. package/djs/tokenizer/module.f.ts +0 -99
  314. package/djs/tokenizer/test.f.ts +0 -364
  315. package/doc/LANGUAGE.md +0 -255
  316. package/doc/README.md +0 -61
  317. package/doc/byte-code.md +0 -59
  318. package/doc/fa.md +0 -174
  319. package/doc/predefined.md +0 -143
  320. package/doc/proposals.md +0 -21
  321. package/doc/vm/README.md +0 -24
  322. package/doc/vm-rearchitecture.md +0 -129
  323. package/doc/vm.md +0 -150
  324. package/fsc/README.md +0 -111
  325. package/fsc/module.f.ts +0 -122
  326. package/fsc/test.f.ts +0 -21
  327. package/fsm/README.md +0 -113
  328. package/fsm/module.f.ts +0 -107
  329. package/fsm/test.f.ts +0 -139
  330. package/funding.json +0 -61
  331. package/html/README.md +0 -32
  332. package/html/module.f.ts +0 -109
  333. package/html/test.f.ts +0 -37
  334. package/issues/01-test-debug.md +0 -3
  335. package/issues/02-esm.md +0 -8
  336. package/issues/03-djs.md +0 -57
  337. package/issues/05-publish.md +0 -40
  338. package/issues/11-fs-load.md +0 -13
  339. package/issues/17-djs-extension.md +0 -6
  340. package/issues/README.md +0 -42
  341. package/issues/lang/1000-json.md +0 -50
  342. package/issues/lang/2110-default-export.md +0 -11
  343. package/issues/lang/2120-const.md +0 -14
  344. package/issues/lang/2130-default-import.md +0 -10
  345. package/issues/lang/2210-block-comment.md +0 -12
  346. package/issues/lang/2220-namespace-import.md +0 -25
  347. package/issues/lang/2310-undefined.md +0 -7
  348. package/issues/lang/2320-bigint.md +0 -7
  349. package/issues/lang/2330-property-accessor.md +0 -225
  350. package/issues/lang/2340-operators.md +0 -41
  351. package/issues/lang/2350-grouping.md +0 -11
  352. package/issues/lang/2360-built-in.md +0 -81
  353. package/issues/lang/2410-identifier-property.md +0 -9
  354. package/issues/lang/2420-line-comment.md +0 -10
  355. package/issues/lang/2430-trailing-comma.md +0 -13
  356. package/issues/lang/2440-shorthand.md +0 -8
  357. package/issues/lang/2450-destructuring.md +0 -12
  358. package/issues/lang/3110-function.md +0 -35
  359. package/issues/lang/3120-parameters.md +0 -9
  360. package/issues/lang/3130-body-const.md +0 -12
  361. package/issues/lang/3220-let.md +0 -11
  362. package/issues/lang/3240-export.md +0 -44
  363. package/issues/lang/3370-type-inference.md +0 -69
  364. package/issues/lang/3380-promise.md +0 -22
  365. package/issues/lang/3390-class.md +0 -3
  366. package/issues/lang/3410-expression.md +0 -12
  367. package/issues/lang/3420-one-parameter.md +0 -10
  368. package/issues/lang/3430-assignments.md +0 -23
  369. package/issues/lang/README.md +0 -193
  370. package/issues/test.f.ts +0 -58
  371. package/js/tokenizer/module.f.ts +0 -882
  372. package/js/tokenizer/test.f.ts +0 -617
  373. package/json/html/README.md +0 -49
  374. package/json/module.f.ts +0 -94
  375. package/json/parser/module.f.ts +0 -221
  376. package/json/parser/test.f.ts +0 -255
  377. package/json/serializer/module.f.ts +0 -74
  378. package/json/serializer/test.f.ts +0 -64
  379. package/json/test.f.ts +0 -48
  380. package/json/tokenizer/module.f.ts +0 -85
  381. package/json/tokenizer/test.f.ts +0 -290
  382. package/nanvm-lib/Cargo.toml +0 -6
  383. package/nanvm-lib/src/extension.rs +0 -130
  384. package/nanvm-lib/src/interface.rs +0 -133
  385. package/nanvm-lib/src/lib.rs +0 -7
  386. package/nanvm-lib/src/naive.rs +0 -236
  387. package/nanvm-lib/src/nanenum.rs +0 -236
  388. package/nanvm-lib/src/nullish.rs +0 -7
  389. package/nanvm-lib/src/sign.rs +0 -5
  390. package/nanvm-lib/src/simple.rs +0 -32
  391. package/nanvm-lib/tests/test.f.ts +0 -80
  392. package/nanvm-lib/tests/test.rs +0 -108
  393. package/nodejs/version/main.ts +0 -4
  394. package/nodejs/version/module.f.ts +0 -42
  395. package/text/README.md +0 -110
  396. package/text/ascii/module.f.ts +0 -222
  397. package/text/ascii/test.f.ts +0 -14
  398. package/text/module.f.ts +0 -30
  399. package/text/sgr/README.md +0 -3
  400. package/text/sgr/module.f.ts +0 -13
  401. package/text/test.f.ts +0 -19
  402. package/text/utf16/module.f.ts +0 -120
  403. package/text/utf16/test.f.ts +0 -107
  404. package/text/utf8/module.f.ts +0 -116
  405. package/text/utf8/test.f.ts +0 -125
  406. package/tsconfig.json +0 -104
  407. package/types/array/module.f.ts +0 -89
  408. package/types/array/test.f.ts +0 -88
  409. package/types/bigfloat/module.f.ts +0 -93
  410. package/types/bigfloat/test.f.ts +0 -218
  411. package/types/bigint/README.md +0 -35
  412. package/types/bigint/test.f.ts +0 -144
  413. package/types/bit_vec/README.md +0 -18
  414. package/types/bit_vec/test.f.ts +0 -129
  415. package/types/btree/README.md +0 -160
  416. package/types/btree/find/module.f.ts +0 -92
  417. package/types/btree/find/test.f.ts +0 -122
  418. package/types/btree/module.f.ts +0 -35
  419. package/types/btree/remove/module.f.ts +0 -151
  420. package/types/btree/remove/test.f.ts +0 -498
  421. package/types/btree/set/module.f.ts +0 -89
  422. package/types/btree/set/test.f.ts +0 -415
  423. package/types/btree/test.f.ts +0 -92
  424. package/types/btree/types/module.f.ts +0 -27
  425. package/types/byte_set/module.f.ts +0 -73
  426. package/types/byte_set/test.f.ts +0 -84
  427. package/types/function/compare/module.f.ts +0 -26
  428. package/types/function/compare/test.f.ts +0 -7
  429. package/types/function/module.f.ts +0 -43
  430. package/types/function/operator/module.f.ts +0 -65
  431. package/types/function/test.f.ts +0 -20
  432. package/types/list/module.f.ts +0 -350
  433. package/types/list/test.f.ts +0 -327
  434. package/types/map/module.f.ts +0 -65
  435. package/types/map/test.f.ts +0 -76
  436. package/types/nibble_set/module.f.ts +0 -34
  437. package/types/nibble_set/test.f.ts +0 -57
  438. package/types/nullable/module.f.ts +0 -9
  439. package/types/nullable/test.f.ts +0 -9
  440. package/types/number/module.f.ts +0 -20
  441. package/types/number/test.f.ts +0 -194
  442. package/types/object/module.f.ts +0 -30
  443. package/types/object/test.f.ts +0 -14
  444. package/types/range/module.f.ts +0 -10
  445. package/types/range/test.f.ts +0 -9
  446. package/types/range_map/module.f.ts +0 -70
  447. package/types/range_map/test.f.ts +0 -189
  448. package/types/result/module.f.ts +0 -20
  449. package/types/result/module.ts +0 -18
  450. package/types/sorted_list/module.f.ts +0 -83
  451. package/types/sorted_list/test.f.ts +0 -57
  452. package/types/sorted_set/module.f.ts +0 -36
  453. package/types/sorted_set/test.f.ts +0 -67
  454. package/types/string/module.f.ts +0 -26
  455. package/types/string/test.f.ts +0 -43
  456. package/types/string_set/module.f.ts +0 -37
  457. package/types/string_set/test.f.ts +0 -34
@@ -1,88 +0,0 @@
1
- import * as _ from './module.f.ts'
2
- import * as json from '../../json/module.f.ts'
3
- import * as o from '../object/module.f.ts'
4
- const { sort } = o
5
-
6
- const stringify = json.stringify(sort)
7
-
8
- export default {
9
- stringify: () => {
10
- const result = stringify([1, 20, 300])
11
- if (result !== '[1,20,300]') { throw result }
12
- },
13
- at: [
14
- () => {
15
- const result = _.at(2)([1, 20, 300])
16
- if (result !== 300) { throw result }
17
- },
18
-
19
- () => {
20
- const result = _.at(3)([1, 20, 300])
21
- if (result !== null) { throw result }
22
- }
23
- ],
24
- first: [
25
- () => {
26
- const result = _.first([1, 20, 300])
27
- if (result !== 1) { throw result }
28
- },
29
- () => {
30
- const result = _.first([])
31
- if (result !== null) { throw result }
32
- }
33
- ],
34
- last: [
35
- () => {
36
- const result = _.last([1, 20, 300])
37
- if (result !== 300) { throw result }
38
- },
39
- () => {
40
- const result = _.last([])
41
- if (result !== null) { throw result }
42
- }
43
- ],
44
- head: [
45
- () => {
46
- const result = _.head([1, 20, 300])
47
- if (result === null) { throw result }
48
- const str = stringify(result)
49
- if (str !== '[1,20]') { throw str }
50
- },
51
- () => {
52
- const result = _.head([])
53
- if (result !== null) { throw result }
54
- }
55
- ],
56
- tail: [
57
- () => {
58
- const result = _.tail([1, 20, 300])
59
- const str = stringify(result)
60
- if (str !== '[20,300]') { throw str }
61
- },
62
- () => {
63
- const result = _.tail([])
64
- if (result !== null) { throw result }
65
- }
66
- ],
67
-
68
- splitFirst: [
69
- () => {
70
- const result = _.splitFirst([1, 20, 300])
71
- const str = stringify(result)
72
- if (str !== '[1,[20,300]]') { throw str }
73
- },
74
- () => {
75
- const result = _.splitFirst([])
76
- if (result !== null) { throw result }
77
- },
78
- () => {
79
- const result = _.splitLast([1, 20, 300])
80
- const str = stringify(result)
81
- if (str !== '[[1,20],300]') { throw str }
82
- },
83
- () => {
84
- const result = _.splitLast([])
85
- if (result !== null) { throw result }
86
- }
87
- ]
88
- }
@@ -1,93 +0,0 @@
1
- import * as bi from '../bigint/module.f.ts'
2
- const { abs, sign } = bi
3
-
4
- export type BigFloat = readonly[bigint,number]
5
-
6
- type BigFloatWithRemainder = readonly[BigFloat,bigint]
7
-
8
- const twoPow53 = 0b0010_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n
9
- const twoPow54 = 0b0100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n
10
-
11
- const increaseMantissa
12
- : (value: BigFloat) => (min: bigint) => BigFloat
13
- = ([m, e]) => min => {
14
- if (m === 0n) {
15
- return [m, e]
16
- }
17
- const s = sign(m)
18
- m = abs(m)
19
- while (true) {
20
- if (m >= min) {
21
- return [BigInt(s) * m, e]
22
- }
23
- m = m << 1n
24
- e--
25
- }
26
- }
27
-
28
- const decreaseMantissa
29
- : (value: BigFloat) => (max: bigint) => BigFloat
30
- = ([m, e]) => max => {
31
- if (m === 0n) {
32
- return [m, e]
33
- }
34
- const s = sign(m)
35
- m = abs(m)
36
- while (true) {
37
- if (m < max) {
38
- return [BigInt(s) * m, e]
39
- }
40
- m = m >> 1n
41
- e++
42
- }
43
- }
44
-
45
- const pow
46
- : (base: bigint) => (exp: number) => bigint
47
- = base => exp => base ** BigInt(exp)
48
-
49
- const pow5 = pow(5n)
50
-
51
- export const multiply
52
- : (b: BigFloat) => (mul: bigint) => BigFloat
53
- = ([m, e]) => mul => [m * mul, e]
54
-
55
- const divide
56
- : (b: BigFloat) => (div: bigint) => BigFloatWithRemainder
57
- = ([m, e]) => div => [[m / div, e], m % div]
58
-
59
- const round53
60
- : (b: BigFloatWithRemainder) => BigFloat
61
- = ([[m, e], r]) => {
62
- const mabs = abs(m)
63
- const s = BigInt(sign(m))
64
- const [m54, e54] = decreaseMantissa([mabs, e])(twoPow54)
65
- const o54 = m54 & 1n
66
- const m53 = m54 >> 1n
67
- const e53 = e54 + 1
68
- if (o54 === 1n && r === 0n && mabs === m54 >> BigInt(e - e54)) {
69
- const odd = m53 & 1n
70
- return multiply([m53 + odd, e53])(s)
71
- }
72
- return multiply([m53 + o54, e53])(s)
73
- }
74
-
75
- export const decToBin
76
- : (dec: BigFloat) => BigFloat
77
- = dec => {
78
- if (dec[0] === 0n) {
79
- return [0n, 0]
80
- }
81
- if (dec[1] >= 0) {
82
- const bin: BigFloat = [dec[0] * pow5(dec[1]), dec[1]]
83
- const inc = increaseMantissa(bin)(twoPow53)
84
- return round53([inc, 0n])
85
- }
86
- const p = pow5(-dec[1])
87
- const [m, e] = increaseMantissa(dec)(p * twoPow53)
88
- const mAbs = abs(m)
89
- const s = BigInt(sign(m))
90
- const qr = divide([mAbs, e])(p)
91
- const r53 = round53(qr)
92
- return multiply(r53)(s)
93
- }
@@ -1,218 +0,0 @@
1
- import * as _ from './module.f.ts'
2
- const { decToBin } = _
3
-
4
- export default {
5
- decToBin: [
6
- () => {
7
- const result = decToBin([0n, 0])
8
- if (result[0] !== 0b0_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n) { throw result[0].toString(2) }
9
- if (result[1] !== 0) { throw result[1] }
10
- },
11
- () => {
12
- const result = decToBin([0n, 10])
13
- if (result[0] !== 0b0_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n) { throw result[0].toString(2) }
14
- if (result[1] !== 0) { throw result[1] }
15
- },
16
- () => {
17
- const result = decToBin([0n, -10])
18
- if (result[0] !== 0b0_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n) { throw result[0].toString(2) }
19
- if (result[1] !== 0) { throw result[1] }
20
- },
21
- () => {
22
- const result = decToBin([1n, 0])
23
- if (result[0] !== 0b1_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n) { throw result[0].toString(2) }
24
- if (result[1] !== -52) { throw result[1] }
25
- },
26
- () => {
27
- const result = decToBin([1n, 1])
28
- if (result[0] !== 0b1_0100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n) { throw result[0].toString(2) }
29
- if (result[1] !== -49) { throw result[1] }
30
- },
31
- () => {
32
- const result = decToBin([1000n, -2])
33
- if (result[0] !== 0b1_0100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n) { throw result[0].toString(2) }
34
- if (result[1] !== -49) { throw result[1] }
35
- },
36
- () => {
37
- const result = decToBin([1n, -1])
38
- if (result[0] !== 0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1010n) { throw result[0].toString(2) } //+1
39
- if (result[1] !== -56) { throw result[1] }
40
- },
41
- () => {
42
- const result = decToBin([-1n, 0])
43
- if (result[0] !== -0b1_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n) { throw result[0].toString(2) }
44
- if (result[1] !== -52) { throw result[1] }
45
- },
46
- () => {
47
- const result = decToBin([-1n, 1])
48
- if (result[0] !== -0b1_0100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n) { throw result[0].toString(2) }
49
- if (result[1] !== -49) { throw result[1] }
50
- },
51
- () => {
52
- const result = decToBin([-1000n, -2])
53
- if (result[0] !== -0b1_0100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n) { throw result[0].toString(2) }
54
- if (result[1] !== -49) { throw result[1] }
55
- },
56
- () => {
57
- const result = decToBin([-1n, -1])
58
- if (result[0] !== -0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1010n) { throw result[0].toString(2) } //+1
59
- if (result[1] !== -56) { throw result[1] }
60
- },
61
- () => {
62
- const result = decToBin([0b10_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001n, 0]) //54bits (...0.1)
63
- if (result[0] !== 0b1_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n) { throw result[0].toString(2) }
64
- if (result[1] !== 1) { throw result[1] }
65
- },
66
- () => {
67
- const result = decToBin([-0b10_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0011n, 0]) //54bits (...1.1)
68
- if (result[0] !== -0b1_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010n) { throw result[0].toString(2) }
69
- if (result[1] !== 1) { throw result[1] }
70
- },
71
- () => {
72
- const result = decToBin([-0b10_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001n, 0]) //54bits (...0.1)
73
- if (result[0] !== -0b1_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n) { throw result[0].toString(2) }
74
- if (result[1] !== 1) { throw result[1] }
75
- },
76
- () => {
77
- const result = decToBin([-0b10_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0011n, 0]) //54bits (...1.1)
78
- if (result[0] !== -0b1_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010n) { throw result[0].toString(2) }
79
- if (result[1] !== 1) { throw result[1] }
80
- },
81
- () => {
82
- const result = decToBin([0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001n, 0]) //55bits (...0.01)
83
- if (result[0] !== 0b1_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n) { throw result[0].toString(2) }
84
- if (result[1] !== 2) { throw result[1] }
85
- },
86
- () => {
87
- const result = decToBin([0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010n, 0]) //55bits (...0.10)
88
- if (result[0] !== 0b1_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n) { throw result[0].toString(2) }
89
- if (result[1] !== 2) { throw result[1] }
90
- },
91
- () => {
92
- const result = decToBin([0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0110n, 0]) //55bits (...1.10)
93
- if (result[0] !== 0b1_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010n) { throw result[0].toString(2) }
94
- if (result[1] !== 2) { throw result[1] }
95
- },
96
- () => {
97
- const result = decToBin([0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0011n, 0]) //55bits (0.11)
98
- if (result[0] !== 0b1_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001n) { throw result[0].toString(2) }
99
- if (result[1] !== 2) { throw result[1] }
100
- },
101
- ],
102
- roundingPositive: [
103
- () => {
104
- const result = decToBin([0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001n, -1])
105
- // reminder = 0
106
- // m = 11001100110011001100110011001100110011001100110011001.101
107
- // rounding up
108
- if (result[0] !== 0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1010n) { throw result[0].toString(2) }
109
- if (result[1] !== 2) { throw result[1] }
110
- },
111
- () => {
112
- const result = decToBin([0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001_0000n, -1])
113
- // reminder = 0
114
- // m = 11001100110011001100110011001100110011001100110011010.000
115
- // rounding down
116
- if (result[0] !== 0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1010n) { throw result[0].toString(2) }
117
- if (result[1] !== 2) { throw result[1] }
118
- },
119
- () => {
120
- const result = decToBin([0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010_0100n, -1])
121
- // reminder = 0
122
- // m = 11001100110011001100110011001100110011001100110011010.100
123
- // rounding down (to even)
124
- if (result[0] !== 0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1010n) { throw result[0].toString(2) }
125
- if (result[1] !== 2) { throw result[1] }
126
- },
127
- () => {
128
- const result = decToBin([0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010_0101n, -1])
129
- // reminder = 1
130
- // m = 11001100110011001100110011001100110011001100110011010.100
131
- // rounding up
132
- if (result[0] !== 0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1011n) { throw result[0].toString(2) }
133
- if (result[1] !== 2) { throw result[1] }
134
- },
135
- () => {
136
- const result = decToBin([0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010_1001n, -1])
137
- // reminder = 0
138
- // m = 11001100110011001100110011001100110011001100110011010.101
139
- // rounding up
140
- if (result[0] !== 0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1011n) { throw result[0].toString(2) }
141
- if (result[1] !== 2) { throw result[1] }
142
- },
143
- () => {
144
- const result = decToBin([0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0011_1101n, -1])
145
- // reminder = 0
146
- // m = 11001100110011001100110011001100110011001100110011011.001
147
- // rounding down
148
- if (result[0] !== 0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1011n) { throw result[0].toString(2) }
149
- if (result[1] !== 2) { throw result[1] }
150
- },
151
- () => {
152
- const result = decToBin([0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0100_1100n, -1])
153
- // reminder = 0
154
- // m = 11001100110011001100110011001100110011001100110011011.100
155
- // rounding up (to even)
156
- if (result[0] !== 0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1100n) { throw result[0].toString(2) }
157
- if (result[1] !== 2) { throw result[1] }
158
- }
159
- ],
160
- roundingNegative: [
161
- () => {
162
- const result = decToBin([-0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001n, -1])
163
- // reminder = 0
164
- // m = -11001100110011001100110011001100110011001100110011001.101
165
- // rounding down
166
- if (result[0] !== -0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1010n) { throw result[0].toString(2) }
167
- if (result[1] !== 2) { throw result[1] }
168
- },
169
- () => {
170
- const result = decToBin([-0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001_0000n, -1])
171
- // reminder = 0
172
- // m = -11001100110011001100110011001100110011001100110011010.000
173
- // rounding up
174
- if (result[0] !== -0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1010n) { throw result[0].toString(2) }
175
- if (result[1] !== 2) { throw result[1] }
176
- },
177
- () => {
178
- const result = decToBin([-0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010_0100n, -1])
179
- // reminder = 0
180
- // m = -11001100110011001100110011001100110011001100110011010.100
181
- // rounding up (to even)
182
- if (result[0] !== -0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1010n) { throw result[0].toString(2) }
183
- if (result[1] !== 2) { throw result[1] }
184
- },
185
- () => {
186
- const result = decToBin([-0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010_0101n, -1])
187
- // reminder = 1
188
- // m = -11001100110011001100110011001100110011001100110011010.100
189
- // rounding down
190
- if (result[0] !== -0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1011n) { throw result[0].toString(2) }
191
- if (result[1] !== 2) { throw result[1] }
192
- },
193
- () => {
194
- const result = decToBin([-0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010_1001n, -1])
195
- // reminder = 0
196
- // m = -11001100110011001100110011001100110011001100110011010.101
197
- // rounding down
198
- if (result[0] !== -0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1011n) { throw result[0].toString(2) }
199
- if (result[1] !== 2) { throw result[1] }
200
- },
201
- () => {
202
- const result = decToBin([-0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0011_1101n, -1])
203
- // reminder = 0
204
- // m = -11001100110011001100110011001100110011001100110011011.001
205
- // rounding up
206
- if (result[0] !== -0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1011n) { throw result[0].toString(2) }
207
- if (result[1] !== 2) { throw result[1] }
208
- },
209
- () => {
210
- const result = decToBin([-0b100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0100_1100n, -1])
211
- // reminder = 0
212
- // m = -11001100110011001100110011001100110011001100110011011.100
213
- // rounding down (to even)
214
- if (result[0] !== -0b1_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1001_1100n) { throw result[0].toString(2) }
215
- if (result[1] !== 2) { throw result[1] }
216
- }
217
- ]
218
- }
@@ -1,35 +0,0 @@
1
- # BigInt
2
-
3
- Bun has a `bigint` size limitation. It's `1_048_575` bits (`1024 ** 2`) or `131_072` Bytes.
4
-
5
- ## Benchmarks
6
-
7
- ### log2 versus toString (2024/11/25)
8
-
9
- |Framework|log2(x) |x.toString(2).length|
10
- |---------|------------------|--------------------|
11
- |Bun |1.781681 |2.079615 |
12
- |Deno 1 |0.710344 |1.917003 |
13
- |Deno 2 |0.986602 |2.286932 |
14
- |Node 16 |1.521150 |2.330505 |
15
- |Node 18 |1.393006 |2.312573 |
16
- |Node 20 |1.055315 |2.320039 |
17
- |Node 22 |0.983075 |2.336697 |
18
- |Node 23 |0.699960 |1.872965 |
19
-
20
- `log2` wins.
21
-
22
- ### Minus versus Not
23
-
24
- |Framework|minus `-` |not `~` |
25
- |---------|------------------|------------------|
26
- |Bun |86.269967 | 80.372970 |
27
- |Deno 1 |18.754810 | 59.498217 |
28
- |Deno 2 |17.262486 | 57.157273 |
29
- |Node 16 |70.350582 |121.023162 |
30
- |Node 18 |61.039463 | 99.369215 |
31
- |Node 20 |16.908695 | 63.335552 |
32
- |Node 22 |19.546644 | 59.034978 |
33
- |Node 23 |18.246697 | 58.825815 |
34
-
35
- `-` wins.
@@ -1,144 +0,0 @@
1
- import * as _ from './module.f.ts'
2
- const { sum, abs, serialize, log2, bitLength } = _
3
-
4
- export default {
5
- sum: () => {
6
- const result = sum([2n, 3n, 4n, 5n])
7
- if (result !== 14n) { throw result }
8
- },
9
- abs: [
10
- () => {
11
- const result = abs(10n)
12
- if (result !== 10n) { throw result }
13
- },
14
- () => {
15
- const result = abs(-10n)
16
- if (result !== 10n) { throw result }
17
- }
18
- ],
19
- serialize: [
20
- () => {
21
- const result = serialize(0n)
22
- if (result !== '0n') { throw result }
23
- },
24
- () => {
25
- const result = serialize(123456789012345678901234567890n)
26
- if (result !== '123456789012345678901234567890n') { throw result }
27
- },
28
- () => {
29
- const result = serialize(-55555n)
30
- if (result !== '-55555n') { throw result }
31
- },
32
- ],
33
- log2: [
34
- () => {
35
- const result = log2(-3n)
36
- if (result !== -1n) { throw result }
37
- },
38
- () => {
39
- const result = log2(0n)
40
- if (result !== -1n) { throw result }
41
- },
42
- () => {
43
- const result = log2(1n)
44
- if (result !== 0n) { throw result }
45
- },
46
- () => {
47
- const result = log2(2n)
48
- if (result !== 1n) { throw result }
49
- },
50
- () => {
51
- const result = log2(3n)
52
- if (result !== 1n) { throw result }
53
- },
54
- () => {
55
- const result = log2(4n)
56
- if (result !== 2n) { throw result }
57
- },
58
- () => {
59
- const result = log2(7n)
60
- if (result !== 2n) { throw result }
61
- },
62
- () => {
63
- const result = log2(8n)
64
- if (result !== 3n) { throw result }
65
- },
66
- () => {
67
- const result = log2(15n)
68
- if (result !== 3n) { throw result }
69
- },
70
- () => {
71
- const result = log2(16n)
72
- if (result !== 4n) { throw result }
73
- },
74
- () => {
75
- // max for Bun (131_072 Bytes)
76
- const v = 1_048_575n
77
- const result = log2(1n << v)
78
- if (result !== v) { throw result }
79
- },
80
- () => {
81
- const v = 0x18945n
82
- const result = log2(v)
83
- if (result !== 16n) { throw result }
84
- }
85
- ],
86
- toString2: () => {
87
- // max for Bun (131_072 Bytes)
88
- const v = 1_048_575n
89
- const result = (1n << v).toString(2).length - 1
90
- if (result !== 1_048_575) { throw result }
91
- },
92
- minus: () => {
93
- let i = 0n
94
- while (i < 1_048_575n) {
95
- const s = -i
96
- if (i !== -s) { throw [i, s] }
97
- i += 1n
98
- }
99
- },
100
- not: () => {
101
- let i = 0n
102
- while (i < 1_048_575n) {
103
- const s = ~i
104
- if (i !== ~s) { throw [i, s] }
105
- i += 1n
106
- }
107
- },
108
- bitLen: {
109
- 0: () => {
110
- const s = bitLength(0n)
111
- if (s !== 0n) { throw s }
112
- },
113
- m: () => {
114
- let i = 0n
115
- while (i < 10_000n) {
116
- const s = bitLength(1n << i)
117
- if (s !== i + 1n) { throw [s, i] }
118
- i += 1n
119
- }
120
- },
121
- big: () => {
122
- const s = bitLength(1n << 1_000_000n)
123
- if (s !== 1_000_001n) { throw s }
124
- },
125
- neg: [
126
- () => {
127
- const s = bitLength(-1n)
128
- if (s !== 1n) { throw s }
129
- },
130
- () => {
131
- const s = bitLength(-2n)
132
- if (s !== 2n) { throw s }
133
- },
134
- () => {
135
- const s = bitLength(-3n)
136
- if (s !== 2n) { throw s }
137
- },
138
- () => {
139
- const s = bitLength(-4n)
140
- if (s !== 3n) { throw s }
141
- },
142
- ]
143
- }
144
- }
@@ -1,18 +0,0 @@
1
- # Vector of Bits
2
-
3
- A **vector of bits** is represented as a `bigint`. The value is always positive, and an **empty vector** is denoted by `1n`.
4
-
5
- ## Key Characteristics
6
-
7
- - The **most significant bit** with a value of `1` is called the **`stop bit`**.
8
- - The **`stop bit`** marks the boundary of the vector.
9
- - The **`length`** of a vector represents the number of meaningful bits (excluding the **`stop bit`**).
10
- - An **empty vector** is represented by `1n`, with the implicit **`stop bit`** as the only bit.
11
-
12
- ## Example
13
-
14
- | Vector | Binary Representation | `length` | Vector Items |
15
- |---------------|-----------------------|----------|--------------|
16
- | `0b1001n` | `0b1001n` | 3 | `001` |
17
- | `0x1FF` | `0b111111111` | 8 | `11111111` |
18
- | `1n` (empty) | `0b1` | 0 | (none) |