dntk 3.0.1

Command line's multi-platform interactive calculator, GNU bc wrapper.
Documentation

dntk

Travis CI v2.2.1 crates docker license platform

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

✔︎ dntk means calculator in a japanese. ✔︎ dntk is bc-compatible calculator with 28-digit precision (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.
✔︎ dntk write color means,

Current dntk's versiv3.0.1

Download Page: https://github.com/nnao45/dntk/releases/latest

✨ Key Features

🎯 High-Precision Arithmetic

  • 28 decimal digits of precision (exceeds bc's default 20 digits)
  • No floating-point errors: 1 + 0.7 = 1.7 (not 1.69999...)
  • Accurate division: 1/3 = .33333333333333333333

⚡ Fast & Lightweight

  • No external dependencies (bc command not required!)
  • Pure Rust implementation for maximum performance
  • Optimized expression evaluation with fasteval + rust_decimal

🌍 True Cross-Platform

  • Works out of the box on Windows, Linux, macOS, and FreeBSD
  • No need to install bc.exe on Windows anymore!
  • Single binary, easy deployment

🔧 bc-Compatible

  • 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) plus length, scale, and Bessel j(n,x) — short aliases like s(), c(), a(), l(), e() still work
  • Interactive REPL with cursor movement and editing

Platform

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

Install

Mac

$ brew install nnao45/dntk/dntk

Linux

$ wget https://github.com/nnao45/dntk/releases/download/v2.2.1/dntk-v2.2.1-x86_64-unknown-linux-musl.zip
$ unzip dntk-v2.2.1-x86_64-unknown-linux-musl.zip

Windows

$ wget https://github.com/nnao45/dntk/releases/download/v2.2.1/dntk-v2.2.1-x86_64-pc-windows-msvc.zip
$ unzip dntk-v2.2.1-x86_64-pc-windows-msvc.zip

FreeBSD

$ wget https://github.com/nnao45/dntk/releases/download/v2.2.1/dntk-v2.2.1-x86_64-unknown-freebsd.zip
$ unzip dntk-v2.2.1-x86_64-unknown-freebsd.zip

Cargo

$ cargo install dntk

zplug

$ zplug 'nnao45/dntk', as:command, from:gh-r

Docker

Can 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.5MB

And run,

$ docker run -it --rm nnao45/dntk:latest

And...

$ echo 'alias bc=dntk' >> ~/.bashrc
$ echo 'alias bc=dntk' >> ~/.zshrc

All OK!! 😎

Options

❯❯❯ 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!

Pipe Support

$ echo "123 * 2" | dntk
246

behave, like bc ☺️

Paste Support

$ echo '( 1 + 2 + 3 + 4 + 51 ) / sqrt( 123 / 3 )' | pbcopy
$ pbpaste | dntk
9.52659947520496999698

Windows Support

No additional setup required! 🎉

dntk works out of the box on Windows without installing bc.exe. Just download and run!

gjf

Previous versions (v2.2.1 and earlier)

Older versions required bc.exe installation. If you're using an older version:

$ choco install gnuwin

Recommendation: Upgrade to the latest version for better Windows support!

Keybind

Basic Key

Basic Operation

Operation for Logical

Using Function

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 order n)

more detail 👉 https://www.gnu.org/software/bc/manual/html_mono/bc.html

🔬 Technical Details

Architecture

dntk uses a hybrid approach for optimal performance and precision:

  1. Expression Parsing: fasteval - Fast and lightweight expression parser
  2. High-Precision Arithmetic: rust_decimal - 28-digit decimal precision
  3. Result Formatting: bc-compatible output format

Precision Comparison

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 ✅

Dependencies

  • fasteval - Expression evaluation
  • rust_decimal - High-precision decimal arithmetic (up to 28 digits)
  • Pure Rust implementation (no C library dependencies)

Why No bc Command Required?

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)

Development Guide

Compile

Binary

$ make

Docker

$ make docker-build

Contribute

Always Welcome!! 😄

Have a nice rust hacking days:sparkles::wink:

Writer & License

dntk was writed by nnao45 (WORK:Infrastructure Engineer, Twitter:@nnao45, MAIL:n4sekai5y@gmail.com).
This software is released under the MIT License, see LICENSE.