functionalscript 0.3.4 → 0.3.6
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.
- package/com/cpp/module.f.d.ts +10 -0
- package/com/cpp/module.f.js +107 -0
- package/com/cpp/test.f.d.ts +2 -0
- package/com/cpp/{test.f.ts → test.f.js} +9 -11
- package/com/cpp/testlib.f.d.ts +2 -0
- package/com/cpp/testlib.f.js +5 -0
- package/com/cs/module.f.d.ts +12 -0
- package/com/cs/module.f.js +80 -0
- package/com/cs/test.f.d.ts +2 -0
- package/com/cs/{test.f.ts → test.f.js} +9 -11
- package/com/cs/testlib.f.d.ts +2 -0
- package/com/cs/testlib.f.js +5 -0
- package/com/rust/module.f.d.ts +15 -0
- package/com/rust/module.f.js +169 -0
- package/com/rust/test.f.d.ts +2 -0
- package/com/rust/{test.f.ts → test.f.js} +7 -7
- package/com/rust/testlib.f.d.ts +2 -0
- package/com/rust/testlib.f.js +5 -0
- package/com/test/build.f.d.ts +20 -0
- package/com/test/build.f.js +58 -0
- package/com/types/module.f.d.ts +28 -0
- package/com/types/module.f.js +8 -0
- package/com/types/testlib.f.d.ts +44 -0
- package/com/types/{testlib.f.ts → testlib.f.js} +2 -3
- package/commonjs/build/module.f.d.ts +6 -0
- package/commonjs/build/module.f.js +69 -0
- package/commonjs/build/test.f.d.ts +2 -0
- package/commonjs/build/test.f.js +96 -0
- package/commonjs/module/function/{module.f.ts → module.f.d.ts} +5 -10
- package/commonjs/module/function/module.f.js +4 -0
- package/commonjs/module/module.f.d.ts +18 -0
- package/commonjs/module/module.f.js +12 -0
- package/commonjs/module.f.d.ts +6 -0
- package/commonjs/module.f.js +1 -0
- package/commonjs/package/dependencies/module.f.d.ts +7 -0
- package/commonjs/package/dependencies/module.f.js +13 -0
- package/commonjs/package/dependencies/test.f.d.ts +2 -0
- package/commonjs/package/dependencies/test.f.js +15 -0
- package/commonjs/package/module.f.d.ts +17 -0
- package/commonjs/package/module.f.js +18 -0
- package/commonjs/package/test.f.d.ts +2 -0
- package/commonjs/package/test.f.js +27 -0
- package/commonjs/path/module.f.d.ts +24 -0
- package/commonjs/path/module.f.js +114 -0
- package/commonjs/path/test.f.d.ts +25 -0
- package/commonjs/path/{test.f.ts → test.f.js} +123 -89
- package/crypto/prime_field/module.f.d.ts +43 -0
- package/crypto/prime_field/module.f.js +78 -0
- package/crypto/prime_field/test.f.d.ts +13 -0
- package/crypto/prime_field/test.f.js +149 -0
- package/crypto/secp/module.f.d.ts +68 -0
- package/crypto/secp/module.f.js +127 -0
- package/crypto/secp/test.f.d.ts +5 -0
- package/crypto/secp/test.f.js +72 -0
- package/crypto/sha2/module.f.d.ts +13 -0
- package/crypto/sha2/module.f.js +145 -0
- package/crypto/sha2/test.f.d.ts +9 -0
- package/crypto/sha2/test.f.js +82 -0
- package/dev/module.f.d.ts +1 -0
- package/dev/module.f.js +1 -0
- package/dev/test/module.f.d.ts +20 -0
- package/dev/test/module.f.js +75 -0
- package/dev/test.f.d.ts +9 -0
- package/dev/{test.f.ts → test.f.js} +22 -24
- package/djs/module.f.d.ts +17 -0
- package/djs/module.f.js +63 -0
- package/djs/parser/module.f.d.ts +12 -0
- package/djs/parser/module.f.js +333 -0
- package/djs/parser/test.f.d.ts +12 -0
- package/djs/parser/test.f.js +717 -0
- package/djs/serializer/module.f.d.ts +9 -0
- package/djs/serializer/module.f.js +81 -0
- package/djs/test/input.f.d.ts +2 -0
- package/djs/test/input.f.js +4 -0
- package/djs/test/m.f.d.ts +2 -0
- package/djs/test/m.f.js +1 -0
- package/djs/test.f.d.ts +12 -0
- package/djs/test.f.js +84 -0
- package/djs/tokenizer/module.f.d.ts +8 -0
- package/djs/tokenizer/module.f.js +60 -0
- package/djs/tokenizer/test.f.d.ts +7 -0
- package/djs/tokenizer/test.f.js +529 -0
- package/fsc/module.f.d.ts +5 -0
- package/fsc/module.f.js +75 -0
- package/fsc/test.f.d.ts +4 -0
- package/fsc/test.f.js +19 -0
- package/fsm/module.f.d.ts +13 -0
- package/fsm/module.f.js +59 -0
- package/fsm/test.f.d.ts +5 -0
- package/fsm/test.f.js +137 -0
- package/html/module.f.d.ts +13 -0
- package/html/module.f.js +58 -0
- package/html/test.f.d.ts +9 -0
- package/html/test.f.js +42 -0
- package/issues/test.f.d.ts +16 -0
- package/issues/test.f.js +70 -0
- package/js/tokenizer/module.f.d.ts +86 -0
- package/js/tokenizer/module.f.js +503 -0
- package/js/tokenizer/test.f.d.ts +9 -0
- package/js/tokenizer/test.f.js +905 -0
- package/json/module.f.d.ts +20 -0
- package/json/module.f.js +68 -0
- package/json/parser/module.f.d.ts +5 -0
- package/json/parser/module.f.js +155 -0
- package/json/parser/test.f.d.ts +5 -0
- package/json/parser/test.f.js +328 -0
- package/json/serializer/module.f.d.ts +7 -0
- package/json/serializer/module.f.js +21 -0
- package/json/serializer/test.f.d.ts +8 -0
- package/json/serializer/test.f.js +87 -0
- package/json/test.f.d.ts +8 -0
- package/json/test.f.js +61 -0
- package/json/tokenizer/module.f.d.ts +8 -0
- package/json/tokenizer/module.f.js +52 -0
- package/json/tokenizer/test.f.d.ts +6 -0
- package/json/tokenizer/test.f.js +419 -0
- package/nanvm-lib/tests/test.f.d.ts +27 -0
- package/nanvm-lib/tests/test.f.js +84 -0
- package/nodejs/version/module.f.d.ts +11 -0
- package/nodejs/version/module.f.js +16 -0
- package/nodejs/version/test.f.d.ts +2 -0
- package/nodejs/version/{test.f.ts → test.f.js} +13 -22
- package/package.json +9 -5
- package/text/ascii/module.f.d.ts +129 -0
- package/text/ascii/module.f.js +148 -0
- package/text/ascii/test.f.d.ts +4 -0
- package/text/ascii/test.f.js +14 -0
- package/text/module.f.d.ts +8 -0
- package/text/module.f.js +10 -0
- package/text/sgr/module.f.d.ts +8 -0
- package/text/sgr/module.f.js +8 -0
- package/text/test.f.d.ts +2 -0
- package/text/test.f.js +18 -0
- package/text/utf16/module.f.d.ts +9 -0
- package/text/utf16/module.f.js +66 -0
- package/text/utf16/test.f.d.ts +6 -0
- package/text/utf16/test.f.js +144 -0
- package/text/utf8/module.f.d.ts +6 -0
- package/text/utf8/module.f.js +112 -0
- package/text/utf8/test.f.d.ts +6 -0
- package/text/utf8/test.f.js +175 -0
- package/types/array/module.f.d.ts +21 -0
- package/types/array/module.f.js +23 -0
- package/types/array/test.f.d.ts +10 -0
- package/types/array/test.f.js +116 -0
- package/types/bigfloat/module.f.d.ts +3 -0
- package/types/bigfloat/module.f.js +66 -0
- package/types/bigfloat/test.f.d.ts +6 -0
- package/types/bigfloat/test.f.js +349 -0
- package/types/bigint/module.f.d.ts +54 -0
- package/types/bigint/{module.f.ts → module.f.js} +42 -65
- package/types/bigint/test.f.d.ts +16 -0
- package/types/bigint/test.f.js +199 -0
- package/types/bit_vec/module.f.d.ts +134 -0
- package/types/bit_vec/{module.f.ts → module.f.js} +47 -65
- package/types/bit_vec/test.f.d.ts +22 -0
- package/types/bit_vec/test.f.js +210 -0
- package/types/btree/find/module.f.d.ts +20 -0
- package/types/btree/find/module.f.js +84 -0
- package/types/btree/find/test.f.d.ts +2 -0
- package/types/btree/find/test.f.js +152 -0
- package/types/btree/module.f.d.ts +4 -0
- package/types/btree/module.f.js +31 -0
- package/types/btree/remove/module.f.d.ts +4 -0
- package/types/btree/remove/module.f.js +174 -0
- package/types/btree/remove/test.f.d.ts +5 -0
- package/types/btree/remove/test.f.js +634 -0
- package/types/btree/set/module.f.d.ts +3 -0
- package/types/btree/set/module.f.js +103 -0
- package/types/btree/set/test.f.d.ts +2 -0
- package/types/btree/set/test.f.js +360 -0
- package/types/btree/test.f.d.ts +8 -0
- package/types/btree/test.f.js +75 -0
- package/types/btree/types/module.f.d.ts +11 -0
- package/types/btree/types/module.f.js +1 -0
- package/types/byte_set/module.f.d.ts +16 -0
- package/types/byte_set/module.f.js +28 -0
- package/types/byte_set/test.f.d.ts +12 -0
- package/types/byte_set/test.f.js +122 -0
- package/types/function/compare/module.f.d.ts +10 -0
- package/types/function/compare/module.f.js +7 -0
- package/types/function/compare/test.f.d.ts +2 -0
- package/types/function/compare/test.f.js +8 -0
- package/types/function/module.f.d.ts +28 -0
- package/types/function/module.f.js +19 -0
- package/types/function/operator/module.f.d.ts +20 -0
- package/types/function/operator/module.f.js +18 -0
- package/types/function/test.f.d.ts +2 -0
- package/types/function/test.f.js +12 -0
- package/types/list/module.f.d.ts +50 -0
- package/types/list/module.f.js +171 -0
- package/types/list/test.f.d.ts +22 -0
- package/types/list/test.f.js +395 -0
- package/types/map/module.f.d.ts +14 -0
- package/types/map/module.f.js +31 -0
- package/types/map/test.f.d.ts +5 -0
- package/types/map/test.f.js +114 -0
- package/types/nibble_set/module.f.d.ts +10 -0
- package/types/nibble_set/module.f.js +9 -0
- package/types/nibble_set/test.f.d.ts +12 -0
- package/types/nibble_set/test.f.js +90 -0
- package/types/nullable/module.f.d.ts +3 -0
- package/types/nullable/module.f.js +2 -0
- package/types/nullable/test.f.d.ts +2 -0
- package/types/nullable/test.f.js +12 -0
- package/types/number/module.f.d.ts +6 -0
- package/types/number/module.f.js +8 -0
- package/types/number/test.f.d.ts +11 -0
- package/types/number/test.f.js +124 -0
- package/types/object/module.f.d.ts +10 -0
- package/types/object/module.f.js +12 -0
- package/types/object/test.f.d.ts +5 -0
- package/types/object/test.f.js +17 -0
- package/types/range/module.f.d.ts +3 -0
- package/types/range/module.f.js +2 -0
- package/types/range/test.f.d.ts +2 -0
- package/types/range/test.f.js +18 -0
- package/types/range_map/module.f.d.ts +14 -0
- package/types/range_map/module.f.js +51 -0
- package/types/range_map/test.f.d.ts +6 -0
- package/types/range_map/test.f.js +176 -0
- package/types/result/module.f.d.ts +7 -0
- package/types/result/module.f.js +8 -0
- package/types/sorted_list/module.f.d.ts +16 -0
- package/types/sorted_list/module.f.js +56 -0
- package/types/sorted_list/test.f.d.ts +5 -0
- package/types/sorted_list/test.f.js +64 -0
- package/types/sorted_set/module.f.d.ts +7 -0
- package/types/sorted_set/module.f.js +14 -0
- package/types/sorted_set/test.f.d.ts +6 -0
- package/types/sorted_set/test.f.js +78 -0
- package/types/string/module.f.d.ts +6 -0
- package/types/string/module.f.js +11 -0
- package/types/string/test.f.d.ts +15 -0
- package/types/string/test.f.js +58 -0
- package/types/string_set/module.f.d.ts +9 -0
- package/types/string_set/module.f.js +22 -0
- package/types/string_set/test.f.d.ts +5 -0
- package/types/string_set/test.f.js +65 -0
- package/.github/FUNDING.yml +0 -12
- package/.github/dependabot.yml +0 -11
- package/.github/workflows/ci.yml +0 -88
- package/.github/workflows/npm-publish.yml +0 -53
- package/CHANGELOG.md +0 -29
- package/Cargo.lock +0 -18
- package/Cargo.toml +0 -7
- package/com/README.md +0 -3
- package/com/cpp/README.md +0 -80
- package/com/cpp/module.f.ts +0 -180
- package/com/cpp/nanocom.hpp +0 -195
- package/com/cpp/testlib.f.ts +0 -8
- package/com/cs/module.f.ts +0 -145
- package/com/cs/testlib.f.ts +0 -8
- package/com/proposals.md +0 -28
- package/com/rust/module.f.ts +0 -287
- package/com/rust/nanocom/Cargo.lock +0 -7
- package/com/rust/nanocom/Cargo.toml +0 -15
- package/com/rust/nanocom/README.md +0 -56
- package/com/rust/nanocom/src/class.rs +0 -6
- package/com/rust/nanocom/src/cobject.rs +0 -90
- package/com/rust/nanocom/src/guid.rs +0 -15
- package/com/rust/nanocom/src/hresult.rs +0 -7
- package/com/rust/nanocom/src/interface.rs +0 -9
- package/com/rust/nanocom/src/iunknown.rs +0 -13
- package/com/rust/nanocom/src/lib.rs +0 -20
- package/com/rust/nanocom/src/object.rs +0 -34
- package/com/rust/nanocom/src/ref.rs +0 -57
- package/com/rust/nanocom/src/vmt.rs +0 -7
- package/com/rust/nanocom/tests/it.rs +0 -186
- package/com/rust/nanocom/tests/itmod.rs +0 -195
- package/com/rust/testlib.f.ts +0 -8
- package/com/test/build.f.ts +0 -111
- package/com/test/build.ts +0 -45
- package/com/test/cpp/main.cpp +0 -74
- package/com/test/cs/Program.cs +0 -31
- package/com/test/cs/cs.csproj +0 -16
- package/com/test/rust/Cargo.toml +0 -12
- package/com/test/rust/src/lib.rs +0 -56
- package/com/types/module.f.ts +0 -62
- package/commonjs/README.md +0 -94
- package/commonjs/build/module.f.ts +0 -100
- package/commonjs/build/test.f.ts +0 -107
- package/commonjs/module/module.f.ts +0 -41
- package/commonjs/module.f.ts +0 -7
- package/commonjs/module.ts +0 -31
- package/commonjs/package/dependencies/module.f.ts +0 -22
- package/commonjs/package/dependencies/test.f.ts +0 -8
- package/commonjs/package/module.f.ts +0 -31
- package/commonjs/package/test.f.ts +0 -12
- package/commonjs/path/README.md +0 -17
- package/commonjs/path/module.f.ts +0 -171
- package/commonjs/test.ts +0 -64
- package/crypto/README.md +0 -3
- package/crypto/prime_field/module.f.ts +0 -114
- package/crypto/prime_field/test.f.ts +0 -95
- package/crypto/secp/module.f.ts +0 -182
- package/crypto/secp/test.f.ts +0 -68
- package/crypto/sha2/module.f.ts +0 -215
- package/crypto/sha2/test.f.ts +0 -83
- package/deno.json +0 -71
- package/dev/README.md +0 -8
- package/dev/index.ts +0 -3
- package/dev/module.f.ts +0 -1
- package/dev/module.ts +0 -195
- package/dev/test/module.f.ts +0 -135
- package/dev/test.ts +0 -53
- package/djs/README.md +0 -54
- package/djs/module.f.ts +0 -76
- package/djs/parser/module.f.ts +0 -509
- package/djs/parser/test.f.ts +0 -461
- package/djs/serializer/module.f.ts +0 -90
- package/djs/test.f.ts +0 -67
- package/djs/tokenizer/module.f.ts +0 -99
- package/djs/tokenizer/test.f.ts +0 -364
- package/doc/LANGUAGE.md +0 -255
- package/doc/README.md +0 -61
- package/doc/byte-code.md +0 -59
- package/doc/fa.md +0 -174
- package/doc/predefined.md +0 -143
- package/doc/proposals.md +0 -21
- package/doc/vm/README.md +0 -24
- package/doc/vm-rearchitecture.md +0 -129
- package/doc/vm.md +0 -150
- package/fsc/README.md +0 -111
- package/fsc/module.f.ts +0 -122
- package/fsc/test.f.ts +0 -21
- package/fsm/README.md +0 -113
- package/fsm/module.f.ts +0 -107
- package/fsm/test.f.ts +0 -139
- package/funding.json +0 -61
- package/html/README.md +0 -32
- package/html/module.f.ts +0 -109
- package/html/test.f.ts +0 -37
- package/issues/01-test-debug.md +0 -3
- package/issues/02-esm.md +0 -8
- package/issues/03-djs.md +0 -57
- package/issues/05-publish.md +0 -40
- package/issues/11-fs-load.md +0 -13
- package/issues/17-djs-extension.md +0 -6
- package/issues/README.md +0 -42
- package/issues/lang/1000-json.md +0 -50
- package/issues/lang/2110-default-export.md +0 -11
- package/issues/lang/2120-const.md +0 -14
- package/issues/lang/2130-default-import.md +0 -10
- package/issues/lang/2210-block-comment.md +0 -12
- package/issues/lang/2220-namespace-import.md +0 -25
- package/issues/lang/2310-undefined.md +0 -7
- package/issues/lang/2320-bigint.md +0 -7
- package/issues/lang/2330-property-accessor.md +0 -225
- package/issues/lang/2340-operators.md +0 -41
- package/issues/lang/2350-grouping.md +0 -11
- package/issues/lang/2360-built-in.md +0 -81
- package/issues/lang/2410-identifier-property.md +0 -9
- package/issues/lang/2420-line-comment.md +0 -10
- package/issues/lang/2430-trailing-comma.md +0 -13
- package/issues/lang/2440-shorthand.md +0 -8
- package/issues/lang/2450-destructuring.md +0 -12
- package/issues/lang/3110-function.md +0 -35
- package/issues/lang/3120-parameters.md +0 -9
- package/issues/lang/3130-body-const.md +0 -12
- package/issues/lang/3220-let.md +0 -11
- package/issues/lang/3240-export.md +0 -44
- package/issues/lang/3370-type-inference.md +0 -69
- package/issues/lang/3380-promise.md +0 -22
- package/issues/lang/3390-class.md +0 -3
- package/issues/lang/3410-expression.md +0 -12
- package/issues/lang/3420-one-parameter.md +0 -10
- package/issues/lang/3430-assignments.md +0 -23
- package/issues/lang/README.md +0 -193
- package/issues/test.f.ts +0 -58
- package/js/tokenizer/module.f.ts +0 -882
- package/js/tokenizer/test.f.ts +0 -617
- package/json/html/README.md +0 -49
- package/json/module.f.ts +0 -94
- package/json/parser/module.f.ts +0 -221
- package/json/parser/test.f.ts +0 -255
- package/json/serializer/module.f.ts +0 -74
- package/json/serializer/test.f.ts +0 -64
- package/json/test.f.ts +0 -48
- package/json/tokenizer/module.f.ts +0 -85
- package/json/tokenizer/test.f.ts +0 -290
- package/nanvm-lib/Cargo.toml +0 -6
- package/nanvm-lib/src/extension.rs +0 -130
- package/nanvm-lib/src/interface.rs +0 -133
- package/nanvm-lib/src/lib.rs +0 -7
- package/nanvm-lib/src/naive.rs +0 -236
- package/nanvm-lib/src/nanenum.rs +0 -236
- package/nanvm-lib/src/nullish.rs +0 -7
- package/nanvm-lib/src/sign.rs +0 -5
- package/nanvm-lib/src/simple.rs +0 -32
- package/nanvm-lib/tests/test.f.ts +0 -80
- package/nanvm-lib/tests/test.rs +0 -108
- package/nodejs/version/main.ts +0 -4
- package/nodejs/version/module.f.ts +0 -42
- package/text/README.md +0 -110
- package/text/ascii/module.f.ts +0 -219
- package/text/ascii/test.f.ts +0 -14
- package/text/module.f.ts +0 -30
- package/text/sgr/README.md +0 -3
- package/text/sgr/module.f.ts +0 -11
- package/text/test.f.ts +0 -19
- package/text/utf16/module.f.ts +0 -120
- package/text/utf16/test.f.ts +0 -107
- package/text/utf8/module.f.ts +0 -116
- package/text/utf8/test.f.ts +0 -125
- package/tsconfig.json +0 -104
- package/types/array/module.f.ts +0 -89
- package/types/array/test.f.ts +0 -88
- package/types/bigfloat/module.f.ts +0 -93
- package/types/bigfloat/test.f.ts +0 -218
- package/types/bigint/README.md +0 -35
- package/types/bigint/test.f.ts +0 -144
- package/types/bit_vec/README.md +0 -18
- package/types/bit_vec/test.f.ts +0 -129
- package/types/btree/README.md +0 -160
- package/types/btree/find/module.f.ts +0 -92
- package/types/btree/find/test.f.ts +0 -122
- package/types/btree/module.f.ts +0 -35
- package/types/btree/remove/module.f.ts +0 -151
- package/types/btree/remove/test.f.ts +0 -498
- package/types/btree/set/module.f.ts +0 -89
- package/types/btree/set/test.f.ts +0 -415
- package/types/btree/test.f.ts +0 -92
- package/types/btree/types/module.f.ts +0 -27
- package/types/byte_set/module.f.ts +0 -73
- package/types/byte_set/test.f.ts +0 -84
- package/types/function/compare/module.f.ts +0 -26
- package/types/function/compare/test.f.ts +0 -7
- package/types/function/module.f.ts +0 -43
- package/types/function/operator/module.f.ts +0 -65
- package/types/function/test.f.ts +0 -20
- package/types/list/module.f.ts +0 -350
- package/types/list/test.f.ts +0 -327
- package/types/map/module.f.ts +0 -65
- package/types/map/test.f.ts +0 -76
- package/types/nibble_set/module.f.ts +0 -34
- package/types/nibble_set/test.f.ts +0 -57
- package/types/nullable/module.f.ts +0 -9
- package/types/nullable/test.f.ts +0 -9
- package/types/number/module.f.ts +0 -20
- package/types/number/test.f.ts +0 -194
- package/types/object/module.f.ts +0 -30
- package/types/object/test.f.ts +0 -14
- package/types/range/module.f.ts +0 -10
- package/types/range/test.f.ts +0 -9
- package/types/range_map/module.f.ts +0 -70
- package/types/range_map/test.f.ts +0 -189
- package/types/result/module.f.ts +0 -20
- package/types/result/module.ts +0 -18
- package/types/sorted_list/module.f.ts +0 -83
- package/types/sorted_list/test.f.ts +0 -57
- package/types/sorted_set/module.f.ts +0 -36
- package/types/sorted_set/test.f.ts +0 -67
- package/types/string/module.f.ts +0 -26
- package/types/string/test.f.ts +0 -43
- package/types/string_set/module.f.ts +0 -37
- package/types/string_set/test.f.ts +0 -34
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import * as _ from "./module.f.js";
|
|
2
|
+
const { decToBin } = _;
|
|
3
|
+
export default {
|
|
4
|
+
decToBin: [
|
|
5
|
+
() => {
|
|
6
|
+
const result = decToBin([0n, 0]);
|
|
7
|
+
if (result[0] !== 0n) {
|
|
8
|
+
throw result[0].toString(2);
|
|
9
|
+
}
|
|
10
|
+
if (result[1] !== 0) {
|
|
11
|
+
throw result[1];
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
() => {
|
|
15
|
+
const result = decToBin([0n, 10]);
|
|
16
|
+
if (result[0] !== 0n) {
|
|
17
|
+
throw result[0].toString(2);
|
|
18
|
+
}
|
|
19
|
+
if (result[1] !== 0) {
|
|
20
|
+
throw result[1];
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
() => {
|
|
24
|
+
const result = decToBin([0n, -10]);
|
|
25
|
+
if (result[0] !== 0n) {
|
|
26
|
+
throw result[0].toString(2);
|
|
27
|
+
}
|
|
28
|
+
if (result[1] !== 0) {
|
|
29
|
+
throw result[1];
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
() => {
|
|
33
|
+
const result = decToBin([1n, 0]);
|
|
34
|
+
if (result[0] !== 4503599627370496n) {
|
|
35
|
+
throw result[0].toString(2);
|
|
36
|
+
}
|
|
37
|
+
if (result[1] !== -52) {
|
|
38
|
+
throw result[1];
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
() => {
|
|
42
|
+
const result = decToBin([1n, 1]);
|
|
43
|
+
if (result[0] !== 5629499534213120n) {
|
|
44
|
+
throw result[0].toString(2);
|
|
45
|
+
}
|
|
46
|
+
if (result[1] !== -49) {
|
|
47
|
+
throw result[1];
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
() => {
|
|
51
|
+
const result = decToBin([1000n, -2]);
|
|
52
|
+
if (result[0] !== 5629499534213120n) {
|
|
53
|
+
throw result[0].toString(2);
|
|
54
|
+
}
|
|
55
|
+
if (result[1] !== -49) {
|
|
56
|
+
throw result[1];
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
() => {
|
|
60
|
+
const result = decToBin([1n, -1]);
|
|
61
|
+
if (result[0] !== 7205759403792794n) {
|
|
62
|
+
throw result[0].toString(2);
|
|
63
|
+
} //+1
|
|
64
|
+
if (result[1] !== -56) {
|
|
65
|
+
throw result[1];
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
() => {
|
|
69
|
+
const result = decToBin([-1n, 0]);
|
|
70
|
+
if (result[0] !== -4503599627370496n) {
|
|
71
|
+
throw result[0].toString(2);
|
|
72
|
+
}
|
|
73
|
+
if (result[1] !== -52) {
|
|
74
|
+
throw result[1];
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
() => {
|
|
78
|
+
const result = decToBin([-1n, 1]);
|
|
79
|
+
if (result[0] !== -5629499534213120n) {
|
|
80
|
+
throw result[0].toString(2);
|
|
81
|
+
}
|
|
82
|
+
if (result[1] !== -49) {
|
|
83
|
+
throw result[1];
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
() => {
|
|
87
|
+
const result = decToBin([-1000n, -2]);
|
|
88
|
+
if (result[0] !== -5629499534213120n) {
|
|
89
|
+
throw result[0].toString(2);
|
|
90
|
+
}
|
|
91
|
+
if (result[1] !== -49) {
|
|
92
|
+
throw result[1];
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
() => {
|
|
96
|
+
const result = decToBin([-1n, -1]);
|
|
97
|
+
if (result[0] !== -7205759403792794n) {
|
|
98
|
+
throw result[0].toString(2);
|
|
99
|
+
} //+1
|
|
100
|
+
if (result[1] !== -56) {
|
|
101
|
+
throw result[1];
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
() => {
|
|
105
|
+
const result = decToBin([9007199254740993n, 0]); //54bits (...0.1)
|
|
106
|
+
if (result[0] !== 4503599627370496n) {
|
|
107
|
+
throw result[0].toString(2);
|
|
108
|
+
}
|
|
109
|
+
if (result[1] !== 1) {
|
|
110
|
+
throw result[1];
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
() => {
|
|
114
|
+
const result = decToBin([-9007199254740995n, 0]); //54bits (...1.1)
|
|
115
|
+
if (result[0] !== -4503599627370498n) {
|
|
116
|
+
throw result[0].toString(2);
|
|
117
|
+
}
|
|
118
|
+
if (result[1] !== 1) {
|
|
119
|
+
throw result[1];
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
() => {
|
|
123
|
+
const result = decToBin([-9007199254740993n, 0]); //54bits (...0.1)
|
|
124
|
+
if (result[0] !== -4503599627370496n) {
|
|
125
|
+
throw result[0].toString(2);
|
|
126
|
+
}
|
|
127
|
+
if (result[1] !== 1) {
|
|
128
|
+
throw result[1];
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
() => {
|
|
132
|
+
const result = decToBin([-9007199254740995n, 0]); //54bits (...1.1)
|
|
133
|
+
if (result[0] !== -4503599627370498n) {
|
|
134
|
+
throw result[0].toString(2);
|
|
135
|
+
}
|
|
136
|
+
if (result[1] !== 1) {
|
|
137
|
+
throw result[1];
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
() => {
|
|
141
|
+
const result = decToBin([18014398509481985n, 0]); //55bits (...0.01)
|
|
142
|
+
if (result[0] !== 4503599627370496n) {
|
|
143
|
+
throw result[0].toString(2);
|
|
144
|
+
}
|
|
145
|
+
if (result[1] !== 2) {
|
|
146
|
+
throw result[1];
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
() => {
|
|
150
|
+
const result = decToBin([18014398509481986n, 0]); //55bits (...0.10)
|
|
151
|
+
if (result[0] !== 4503599627370496n) {
|
|
152
|
+
throw result[0].toString(2);
|
|
153
|
+
}
|
|
154
|
+
if (result[1] !== 2) {
|
|
155
|
+
throw result[1];
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
() => {
|
|
159
|
+
const result = decToBin([18014398509481990n, 0]); //55bits (...1.10)
|
|
160
|
+
if (result[0] !== 4503599627370498n) {
|
|
161
|
+
throw result[0].toString(2);
|
|
162
|
+
}
|
|
163
|
+
if (result[1] !== 2) {
|
|
164
|
+
throw result[1];
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
() => {
|
|
168
|
+
const result = decToBin([18014398509481987n, 0]); //55bits (0.11)
|
|
169
|
+
if (result[0] !== 4503599627370497n) {
|
|
170
|
+
throw result[0].toString(2);
|
|
171
|
+
}
|
|
172
|
+
if (result[1] !== 2) {
|
|
173
|
+
throw result[1];
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
roundingPositive: [
|
|
178
|
+
() => {
|
|
179
|
+
const result = decToBin([288230376151711745n, -1]);
|
|
180
|
+
// reminder = 0
|
|
181
|
+
// m = 11001100110011001100110011001100110011001100110011001.101
|
|
182
|
+
// rounding up
|
|
183
|
+
if (result[0] !== 7205759403792794n) {
|
|
184
|
+
throw result[0].toString(2);
|
|
185
|
+
}
|
|
186
|
+
if (result[1] !== 2) {
|
|
187
|
+
throw result[1];
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
() => {
|
|
191
|
+
const result = decToBin([288230376151711760n, -1]);
|
|
192
|
+
// reminder = 0
|
|
193
|
+
// m = 11001100110011001100110011001100110011001100110011010.000
|
|
194
|
+
// rounding down
|
|
195
|
+
if (result[0] !== 7205759403792794n) {
|
|
196
|
+
throw result[0].toString(2);
|
|
197
|
+
}
|
|
198
|
+
if (result[1] !== 2) {
|
|
199
|
+
throw result[1];
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
() => {
|
|
203
|
+
const result = decToBin([288230376151711780n, -1]);
|
|
204
|
+
// reminder = 0
|
|
205
|
+
// m = 11001100110011001100110011001100110011001100110011010.100
|
|
206
|
+
// rounding down (to even)
|
|
207
|
+
if (result[0] !== 7205759403792794n) {
|
|
208
|
+
throw result[0].toString(2);
|
|
209
|
+
}
|
|
210
|
+
if (result[1] !== 2) {
|
|
211
|
+
throw result[1];
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
() => {
|
|
215
|
+
const result = decToBin([288230376151711781n, -1]);
|
|
216
|
+
// reminder = 1
|
|
217
|
+
// m = 11001100110011001100110011001100110011001100110011010.100
|
|
218
|
+
// rounding up
|
|
219
|
+
if (result[0] !== 7205759403792795n) {
|
|
220
|
+
throw result[0].toString(2);
|
|
221
|
+
}
|
|
222
|
+
if (result[1] !== 2) {
|
|
223
|
+
throw result[1];
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
() => {
|
|
227
|
+
const result = decToBin([288230376151711785n, -1]);
|
|
228
|
+
// reminder = 0
|
|
229
|
+
// m = 11001100110011001100110011001100110011001100110011010.101
|
|
230
|
+
// rounding up
|
|
231
|
+
if (result[0] !== 7205759403792795n) {
|
|
232
|
+
throw result[0].toString(2);
|
|
233
|
+
}
|
|
234
|
+
if (result[1] !== 2) {
|
|
235
|
+
throw result[1];
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
() => {
|
|
239
|
+
const result = decToBin([288230376151711805n, -1]);
|
|
240
|
+
// reminder = 0
|
|
241
|
+
// m = 11001100110011001100110011001100110011001100110011011.001
|
|
242
|
+
// rounding down
|
|
243
|
+
if (result[0] !== 7205759403792795n) {
|
|
244
|
+
throw result[0].toString(2);
|
|
245
|
+
}
|
|
246
|
+
if (result[1] !== 2) {
|
|
247
|
+
throw result[1];
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
() => {
|
|
251
|
+
const result = decToBin([288230376151711820n, -1]);
|
|
252
|
+
// reminder = 0
|
|
253
|
+
// m = 11001100110011001100110011001100110011001100110011011.100
|
|
254
|
+
// rounding up (to even)
|
|
255
|
+
if (result[0] !== 7205759403792796n) {
|
|
256
|
+
throw result[0].toString(2);
|
|
257
|
+
}
|
|
258
|
+
if (result[1] !== 2) {
|
|
259
|
+
throw result[1];
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
],
|
|
263
|
+
roundingNegative: [
|
|
264
|
+
() => {
|
|
265
|
+
const result = decToBin([-288230376151711745n, -1]);
|
|
266
|
+
// reminder = 0
|
|
267
|
+
// m = -11001100110011001100110011001100110011001100110011001.101
|
|
268
|
+
// rounding down
|
|
269
|
+
if (result[0] !== -7205759403792794n) {
|
|
270
|
+
throw result[0].toString(2);
|
|
271
|
+
}
|
|
272
|
+
if (result[1] !== 2) {
|
|
273
|
+
throw result[1];
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
() => {
|
|
277
|
+
const result = decToBin([-288230376151711760n, -1]);
|
|
278
|
+
// reminder = 0
|
|
279
|
+
// m = -11001100110011001100110011001100110011001100110011010.000
|
|
280
|
+
// rounding up
|
|
281
|
+
if (result[0] !== -7205759403792794n) {
|
|
282
|
+
throw result[0].toString(2);
|
|
283
|
+
}
|
|
284
|
+
if (result[1] !== 2) {
|
|
285
|
+
throw result[1];
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
() => {
|
|
289
|
+
const result = decToBin([-288230376151711780n, -1]);
|
|
290
|
+
// reminder = 0
|
|
291
|
+
// m = -11001100110011001100110011001100110011001100110011010.100
|
|
292
|
+
// rounding up (to even)
|
|
293
|
+
if (result[0] !== -7205759403792794n) {
|
|
294
|
+
throw result[0].toString(2);
|
|
295
|
+
}
|
|
296
|
+
if (result[1] !== 2) {
|
|
297
|
+
throw result[1];
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
() => {
|
|
301
|
+
const result = decToBin([-288230376151711781n, -1]);
|
|
302
|
+
// reminder = 1
|
|
303
|
+
// m = -11001100110011001100110011001100110011001100110011010.100
|
|
304
|
+
// rounding down
|
|
305
|
+
if (result[0] !== -7205759403792795n) {
|
|
306
|
+
throw result[0].toString(2);
|
|
307
|
+
}
|
|
308
|
+
if (result[1] !== 2) {
|
|
309
|
+
throw result[1];
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
() => {
|
|
313
|
+
const result = decToBin([-288230376151711785n, -1]);
|
|
314
|
+
// reminder = 0
|
|
315
|
+
// m = -11001100110011001100110011001100110011001100110011010.101
|
|
316
|
+
// rounding down
|
|
317
|
+
if (result[0] !== -7205759403792795n) {
|
|
318
|
+
throw result[0].toString(2);
|
|
319
|
+
}
|
|
320
|
+
if (result[1] !== 2) {
|
|
321
|
+
throw result[1];
|
|
322
|
+
}
|
|
323
|
+
},
|
|
324
|
+
() => {
|
|
325
|
+
const result = decToBin([-288230376151711805n, -1]);
|
|
326
|
+
// reminder = 0
|
|
327
|
+
// m = -11001100110011001100110011001100110011001100110011011.001
|
|
328
|
+
// rounding up
|
|
329
|
+
if (result[0] !== -7205759403792795n) {
|
|
330
|
+
throw result[0].toString(2);
|
|
331
|
+
}
|
|
332
|
+
if (result[1] !== 2) {
|
|
333
|
+
throw result[1];
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
() => {
|
|
337
|
+
const result = decToBin([-288230376151711820n, -1]);
|
|
338
|
+
// reminder = 0
|
|
339
|
+
// m = -11001100110011001100110011001100110011001100110011011.100
|
|
340
|
+
// rounding down (to even)
|
|
341
|
+
if (result[0] !== -7205759403792796n) {
|
|
342
|
+
throw result[0].toString(2);
|
|
343
|
+
}
|
|
344
|
+
if (result[1] !== 2) {
|
|
345
|
+
throw result[1];
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
]
|
|
349
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as compare from '../function/compare/module.f.ts';
|
|
2
|
+
import * as Operator from '../function/operator/module.f.ts';
|
|
3
|
+
import { type List } from '../list/module.f.ts';
|
|
4
|
+
export declare const addition: (a: bigint) => (b: bigint) => bigint;
|
|
5
|
+
export declare const sum: (input: List<bigint>) => bigint;
|
|
6
|
+
export declare const abs: (a: bigint) => bigint;
|
|
7
|
+
export declare const sign: (a: bigint) => compare.Sign;
|
|
8
|
+
export declare const serialize: (a: bigint) => string;
|
|
9
|
+
type Additive<T> = {
|
|
10
|
+
readonly 0: T;
|
|
11
|
+
readonly add: Operator.Reduce<T>;
|
|
12
|
+
};
|
|
13
|
+
export declare const scalar_mul: <T>(a: Additive<T>) => (a: T) => (n: bigint) => T;
|
|
14
|
+
/**
|
|
15
|
+
* Calculates the base-2 logarithm (floor).
|
|
16
|
+
*
|
|
17
|
+
* This function returns the integer part of the logarithm. For example:
|
|
18
|
+
* - `log2(1n)` returns `0n`,
|
|
19
|
+
* - `log2(2n)` returns `1n`,
|
|
20
|
+
* - `log2(15n)` returns `3n`.
|
|
21
|
+
*
|
|
22
|
+
* @param v - The input BigInt.
|
|
23
|
+
* @returns The base-2 logarithm (floor) of the input BigInt, or `-1n` if the input is less than or equal to 0.
|
|
24
|
+
*
|
|
25
|
+
* @remarks
|
|
26
|
+
* The function operates in two phases:
|
|
27
|
+
* 1. **Fast Doubling Phase:** Uses exponential steps to quickly narrow down the range
|
|
28
|
+
* of the most significant bit.
|
|
29
|
+
* 2. **Binary Search Phase:** Refines the result by halving the step size and incrementally
|
|
30
|
+
* determining the exact value of the logarithm.
|
|
31
|
+
*/
|
|
32
|
+
export declare const log2: (v: bigint) => bigint;
|
|
33
|
+
/**
|
|
34
|
+
* Calculates the bit length of a given BigInt.
|
|
35
|
+
*
|
|
36
|
+
* The bit length of a number is the number of bits required to represent its absolute value in binary,
|
|
37
|
+
* excluding leading zeros. For example:
|
|
38
|
+
* - `0n` has a bit length of 0 (it has no bits).
|
|
39
|
+
* - `1n` (binary `1`) has a bit length of 1.
|
|
40
|
+
* - `255n` (binary `11111111`) has a bit length of 8.
|
|
41
|
+
* - `-255n` (absolute value `255`, binary `11111111`) also has a bit length of 8.
|
|
42
|
+
*
|
|
43
|
+
* The function handles both positive and negative numbers. For negative inputs, the bit length is calculated
|
|
44
|
+
* based on the absolute value of the number. Zero has a bit length of 0.
|
|
45
|
+
*
|
|
46
|
+
* @param v - The input BigInt.
|
|
47
|
+
* @returns The bit length of the input BigInt.
|
|
48
|
+
*
|
|
49
|
+
* @remark
|
|
50
|
+
* The function uses the `log2` function to calculate the position of the most significant bit(MSB)
|
|
51
|
+
* and adds `1n` to account for the MSB itself.For negative numbers, the absolute value is used.
|
|
52
|
+
*/
|
|
53
|
+
export declare const bitLength: (v: bigint) => bigint;
|
|
54
|
+
export {};
|
|
@@ -1,53 +1,27 @@
|
|
|
1
|
-
import * as compare from
|
|
2
|
-
import * as Operator from
|
|
3
|
-
const { unsafeCmp } = compare
|
|
4
|
-
import { reduce
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
= reduce(addition)(0n)
|
|
15
|
-
|
|
16
|
-
export const abs
|
|
17
|
-
: (a: bigint) => bigint
|
|
18
|
-
= a => a >= 0 ? a : -a
|
|
19
|
-
|
|
20
|
-
export const sign
|
|
21
|
-
: (a: bigint) => compare.Sign
|
|
22
|
-
= a => unsafeCmp(a)(0n)
|
|
23
|
-
|
|
24
|
-
export const serialize
|
|
25
|
-
: (a: bigint) => string
|
|
26
|
-
= a => `${a}n`
|
|
27
|
-
|
|
28
|
-
type Additive<T> = {
|
|
29
|
-
readonly 0: T
|
|
30
|
-
readonly add: Operator.Reduce<T>
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export const scalar_mul
|
|
34
|
-
: <T>(a: Additive<T>) => (a: T) => (n: bigint) => T
|
|
35
|
-
= ({ 0: _0, add }) => a => n => {
|
|
36
|
-
let ai = a
|
|
37
|
-
let ni = n
|
|
38
|
-
let result = _0
|
|
1
|
+
import * as compare from "../function/compare/module.f.js";
|
|
2
|
+
import * as Operator from "../function/operator/module.f.js";
|
|
3
|
+
const { unsafeCmp } = compare;
|
|
4
|
+
import { reduce } from "../list/module.f.js";
|
|
5
|
+
export const addition = a => b => a + b;
|
|
6
|
+
export const sum = reduce(addition)(0n);
|
|
7
|
+
export const abs = a => a >= 0 ? a : -a;
|
|
8
|
+
export const sign = a => unsafeCmp(a)(0n);
|
|
9
|
+
export const serialize = a => `${a}n`;
|
|
10
|
+
export const scalar_mul = ({ 0: _0, add }) => a => n => {
|
|
11
|
+
let ai = a;
|
|
12
|
+
let ni = n;
|
|
13
|
+
let result = _0;
|
|
39
14
|
while (true) {
|
|
40
15
|
if ((ni & 1n) === 1n) {
|
|
41
|
-
result = add(result)(ai)
|
|
16
|
+
result = add(result)(ai);
|
|
42
17
|
}
|
|
43
|
-
ni >>= 1n
|
|
18
|
+
ni >>= 1n;
|
|
44
19
|
if (ni === 0n) {
|
|
45
|
-
return result
|
|
20
|
+
return result;
|
|
46
21
|
}
|
|
47
|
-
ai = add(ai)(ai)
|
|
22
|
+
ai = add(ai)(ai);
|
|
48
23
|
}
|
|
49
|
-
}
|
|
50
|
-
|
|
24
|
+
};
|
|
51
25
|
/**
|
|
52
26
|
* Calculates the base-2 logarithm (floor).
|
|
53
27
|
*
|
|
@@ -66,33 +40,34 @@ export const scalar_mul
|
|
|
66
40
|
* 2. **Binary Search Phase:** Refines the result by halving the step size and incrementally
|
|
67
41
|
* determining the exact value of the logarithm.
|
|
68
42
|
*/
|
|
69
|
-
export const log2 = (v
|
|
70
|
-
if (v <= 0n) {
|
|
71
|
-
|
|
72
|
-
|
|
43
|
+
export const log2 = (v) => {
|
|
44
|
+
if (v <= 0n) {
|
|
45
|
+
return -1n;
|
|
46
|
+
}
|
|
47
|
+
let result = 0n;
|
|
48
|
+
let i = 1n;
|
|
73
49
|
while (true) {
|
|
74
|
-
const n = v >> i
|
|
50
|
+
const n = v >> i;
|
|
75
51
|
if (n === 0n) {
|
|
76
52
|
// overshot
|
|
77
|
-
break
|
|
53
|
+
break;
|
|
78
54
|
}
|
|
79
|
-
v = n
|
|
80
|
-
result += i
|
|
81
|
-
i <<= 1n
|
|
55
|
+
v = n;
|
|
56
|
+
result += i;
|
|
57
|
+
i <<= 1n;
|
|
82
58
|
}
|
|
83
59
|
// We know that `v` is not 0 so it doesn't make sense to check `n` when `i` is 0.
|
|
84
60
|
// Because of this, We check if `i` is greater than 1 before we divide it by 2.
|
|
85
61
|
while (i !== 1n) {
|
|
86
|
-
i >>= 1n
|
|
87
|
-
const n = v >> i
|
|
62
|
+
i >>= 1n;
|
|
63
|
+
const n = v >> i;
|
|
88
64
|
if (n !== 0n) {
|
|
89
|
-
result += i
|
|
90
|
-
v = n
|
|
65
|
+
result += i;
|
|
66
|
+
v = n;
|
|
91
67
|
}
|
|
92
68
|
}
|
|
93
|
-
return result
|
|
94
|
-
}
|
|
95
|
-
|
|
69
|
+
return result;
|
|
70
|
+
};
|
|
96
71
|
/**
|
|
97
72
|
* Calculates the bit length of a given BigInt.
|
|
98
73
|
*
|
|
@@ -113,10 +88,12 @@ export const log2 = (v: bigint): bigint => {
|
|
|
113
88
|
* The function uses the `log2` function to calculate the position of the most significant bit(MSB)
|
|
114
89
|
* and adds `1n` to account for the MSB itself.For negative numbers, the absolute value is used.
|
|
115
90
|
*/
|
|
116
|
-
export const bitLength = (v
|
|
91
|
+
export const bitLength = (v) => {
|
|
117
92
|
if (v <= 0n) {
|
|
118
|
-
if (v === 0n) {
|
|
119
|
-
|
|
93
|
+
if (v === 0n) {
|
|
94
|
+
return 0n;
|
|
95
|
+
}
|
|
96
|
+
v = -v;
|
|
120
97
|
}
|
|
121
|
-
return log2(v) + 1n
|
|
122
|
-
}
|
|
98
|
+
return log2(v) + 1n;
|
|
99
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
sum: () => void;
|
|
3
|
+
abs: (() => void)[];
|
|
4
|
+
serialize: (() => void)[];
|
|
5
|
+
log2: (() => void)[];
|
|
6
|
+
toString2: () => void;
|
|
7
|
+
minus: () => void;
|
|
8
|
+
not: () => void;
|
|
9
|
+
bitLen: {
|
|
10
|
+
0: () => void;
|
|
11
|
+
m: () => void;
|
|
12
|
+
big: () => void;
|
|
13
|
+
neg: (() => void)[];
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export default _default;
|