dntk is command line's multi-platform Interactive calculator with bc-compatible syntax and high-precision arithmetic.

โ๏ธ dntk means calculator in a japanese.
โ๏ธ dntk is bc-compatible calculator with bc-style configurable precision powered by dashu-decimal (no external bc required!)
โ๏ธ dntk syntax is compatible with GNU bc. learn syntax more
โ๏ธ dntk is a NATIVE The Rust Programming Language application.
โ๏ธ dntk can move cursor, can delete char, can refresh buffer.
โ๏ธ dntk provides accurate decimal arithmetic without floating-point errors.
Download Page: https://github.com/nnao45/dntk/releases/latest
- Powered by
dashu-decimalfor arbitrary-precision decimals with predictable bc semantics - Configurable scale (default 20 fractional digits) with faithful truncation just like GNU bc
- No floating-point errors:
1 + 0.7 = 1.7(not 1.69999...) - Accurate division:
1/3 = .33333333333333333333
- No external dependencies (bc command not required!)
- Pure Rust implementation for maximum performance
- Optimized expression evaluation with
fasteval+dashu-decimal
- Works out of the box on Windows, Linux, macOS, and FreeBSD
- No need to install bc.exe on Windows anymore!
- Single binary, easy deployment
- Supports standard bc syntax and functions
- Rich math library: trig/hyperbolic (
sin,cos,tan, โฆ), logarithms (log,ln,log10, โฆ), powers (pow,sqrt,cbrt), aggregations (min,max,hypot) pluslength,scale, and Besselj(n,x)โ short aliases likes(),c(),a(),l(),e()still work - Interactive REPL with cursor movement and editing
- Type complex numbers directly with
i, e.g.1+2i,(4-3i)/(1+2i), orabs(3+4i) - Multiply and add matrices inline using JSON-like brackets:
[[1,2],[3,4]] * [[5,6],[7,8]] - For purely imaginary values, give the coefficient explicitly (
1i,-2i) so regular bc identifiers likeikeep their original meaning
- write color means,
| color | means |
| cyan | can caluclate & can output |
| megenta | can't caluclate, can't output |
| yellow | danger input char, output warning |
| green | clean buffer message |
dntk support multi-platform ๐ mac, linux, freebsd, and windows!!!
- i686-osx
- x86_64-osx
- i686-linux
- x86_64-linux
- i686-windows
- x86_64-windows
- i686-freebsd
- x86_64-freebsd
$ brew install nnao45/dntk/dntk$ wget https://github.com/nnao45/dntk/releases/download/v3.1.0/dntk-v3.1.0-x86_64-unknown-linux-musl.zip
$ unzip dntk-v3.1.0-x86_64-unknown-linux-musl.zip$ wget https://github.com/nnao45/dntk/releases/download/v3.1.0/dntk-v3.1.0-x86_64-pc-windows-msvc.zip
$ unzip dntk-v3.1.0-x86_64-pc-windows-msvc.zip$ wget https://github.com/nnao45/dntk/releases/download/v3.1.0/dntk-v3.1.0-x86_64-unknown-freebsd.zip
$ unzip dntk-v3.1.0-x86_64-unknown-freebsd.zip$ cargo install dntk$ zplug 'nnao45/dntk', as:command, from:gh-rCan use dntk docker image,
Look!! Very light weight!!๐
$ docker images nnao45/dntk
REPOSITORY TAG IMAGE ID CREATED SIZE
nnao45/dntk latest 3a37b5d989b5 2 hours ago 10.5MBAnd run,
$ docker run -it --rm nnao45/dntk:latest$ echo 'alias bc=dntk' >> ~/.bashrc
$ echo 'alias bc=dntk' >> ~/.zshrcAll OK!! ๐
โฏโฏโฏ dntk -h
Command line's multi-platform interactive calculator with high-precision arithmetic.
USAGE:
dntk [FLAGS] [OPTIONS]
FLAGS:
-h, --help Prints help information
--once Run at only once
-q, --quiet No print information message
--show-limits Print the local limits
-V, --version Prints version information
-w, --white Set White color in a output
OPTIONS:
-i, --inject <inject> Pre-run inject statement to the dntk [default: ]
-s, --scale <scale> Number of decimal places (max 28) [default: 20]
Note: --bc-path option has been removed as dntk no longer requires external bc command!
$ echo "123 * 2" | dntk
246behave, like bc
$ echo '( 1 + 2 + 3 + 4 + 51 ) / sqrt( 123 / 3 )' | pbcopy
$ pbpaste | dntk
9.52659947520496999698No additional setup required! ๐
dntk works out of the box on Windows without installing bc.exe. Just download and run!
Older versions required bc.exe installation. If you're using an older version:
$ choco install gnuwinRecommendation: Upgrade to the latest version for better Windows support!
| key | feature |
| [, โ | cursor move to left |
| ], โ | cursor move to right |
| 0~9 | Sendkey this number |
| Ctrl+C, Enter | Finish dntk app |
| Delete, Backspace | Delete current char |
| @ | Clean buffer |
| key | feature |
| + | plus |
| - | minus |
| * | multiplication |
| / | division |
| ^ | exponentiation |
| % | remainder |
| key | feature |
| ! | boolean, relational |
| | | boolean |
| & | boolean |
| > | relational |
| < | relational |
| = | relational |
dntk ships the bc classics plus a broad math toolkit:
- Aliases for bc-style shortcuts:
s(x) โ sin(x),c(x) โ cos(x),a(x) โ atan(x),l(x) โ ln(x),e(x) โ exp(x) - Powers & roots:
sqrt(x),cbrt(x),pow(x,y) - Logs & exponentials:
ln(x),log10(x),log2(x),log(base,value)(arbitrary base),exp(x),expm1(x) - Trigonometric family:
sin,cos,tan,asin,acos,atan,atan2 - Hyperbolic family:
sinh,cosh,tanh,asinh,acosh,atanh - Rounding helpers:
abs,sign,floor,ceil,trunc,round - Aggregations:
min(...),max(...),hypot(x,y) - Precision utilities:
length(x)(digit count),scale(x)(fractional digits),obase=for base-2ใ36 output - Randomness & special:
rand()/rand(n),srand(seed),j(n,x)Bessel (integer ordern)
more detail ๐ https://www.gnu.org/software/bc/manual/html_mono/bc.html
dntk uses a hybrid approach for optimal performance and precision:
- Expression Parsing:
fasteval- Fast and lightweight expression parser - High-Precision Arithmetic:
rust_decimal- 28-digit decimal precision - Result Formatting: bc-compatible output format
| Calculator | Precision | Example: 1+0.7 | Example: 1/3 (20 digits) |
|---|---|---|---|
| bc | 20 digits (default) | 1.7 | .33333333333333333333 |
| dntk (old) | ~15 digits (f64) | 1.69999... โ | .33333333333333331483 โ |
| dntk (new) | 28 digits | 1.7 โ | .33333333333333333333 โ |
fasteval- Expression evaluationrust_decimal- High-precision decimal arithmetic (up to 28 digits)- Pure Rust implementation (no C library dependencies)
Previous versions wrapped the external bc command. The new version:
- Implements bc-compatible arithmetic in pure Rust
- Eliminates subprocess overhead
- Works on all platforms without external dependencies
- Provides better precision (28 vs 20 digits)
$ make$ make docker-buildAlways Welcome!! ๐
Have a nice rust hacking daysโจ๐
dntk was writed by nnao45 (WORK:Infrastructure Engineer, Twitter:@nnao45, MAIL:n4sekai5y@gmail.com).
This software is released under the MIT License, see LICENSE.
