SkillAgentSearch skills...

QBigInt

C library for Big Integer KDB+ Arithmetic aimed for the EVM

Install / Use

/learn @manifoldfinance/QBigInt
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

qBigInt

a C library for Big Interger KDB+ Arithmetic

Overview

Function: add, sub, mul, div, cmp

Inputs: pass in x and y as strings of large numbers in base 2, 10 or 16 ... 62

Outputs: string number in specified base

Setup:

Install GMP library with get_gmp.sh

GMP library website

Compile C bigint libraries (examples for 64 bit kdb)

  • Windows dll compilation using VS: `
    cl /LD /DKXVER=3 bigint.c bigint.def q.lib -lgmp
  • Linux so compilation using gcc:
    gcc -D KXVER=3 -Wall -fno-strict-aliasing -Wno-parentheses -g -O2 -shared -fPIC -o bigint.so bigint.c -lgmp
  • Mac so compilation using gcc:
    gcc -bundle -undefined dynamic_lookup bigint.c -o bigint.so -lgmp

Load function in kdb

bigAdd:`bigint 2:(`add;3)

bigSub:`bigint 2:(`sub;3)

bigMul:`bigint 2:(`mul;3)

bigDiv:`bigint 2:(`divy;3)

bigCmp:`bigint 2:(`cmp;3)

Use in kdb

q)bigAdd:`bigint 2:(`add;3)
q)bigSub:`bigint 2:(`sub;3)
q)bigMul:`bigint 2:(`mul;3)
q)bigDiv:`bigint 2:(`divy;3)
q)bigCmp:`bigint 2:(`cmp;3)

q)base:16;
q)x:"4ee2d6d415b85acef8100000000";
q)y:"ff";

q)bigAdd[x;y;base]
base = 16
x = 4ee2d6d415b85acef8100000000
y = ff
z = 4ee2d6d415b85acef81000000ff

"4ee2d6d415b85acef81000000ff"

q)bigSub[x;y;base]
base = 16
x = 4ee2d6d415b85acef8100000000
y = ff
z = 4ee2d6d415b85acef80ffffff01

"4ee2d6d415b85acef80ffffff01"

q)bigMul[x;y;base]
base = 16
x = 4ee2d6d415b85acef8100000000
y = ff
z = 4e93f3fd41a2a2742917f00000000

"4e93f3fd41a2a2742917f00000000"

q)bigDiv[x;y;base]
base = 16
x = 4ee2d6d415b85acef8100000000
y = ff
z = 4f3208dcf2ab05d4ccdcdcdcd

"4f3208dcf2ab05d4ccdcdcdcd"

q)bigCmp[x;y;base]
3i
q)bigCmp[y;x;base]
-3i
q)bigCmp[y;y;base]
0i

License

Licensed under either of

  • Universal Permissive License 1.0 (LICENSE-UPL or https://opensource.org/licenses/UPL)

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Universal Permissive License v 1.0 license, shall be dual licensed as above, without any additional terms or conditions.

View on GitHub
GitHub Stars7
CategoryDevelopment
Updated1y ago
Forks4

Languages

C

Security Score

60/100

Audited on May 3, 2024

No findings