rink 0.3.1

Unit conversion tool and library, similar to frink
Documentation

Rink

Rink is a unit-aware calculator. It can be used for physics and engineering calculations, as well as dimensionality analysis.

Rink supports most systems of measurements including SI, CGS, natural, international customary, US customary, UK customary, as well as historical measurements.

Unique features:

  • High-precision bignum rational arithmetic
  • Detailed error messages
  • Shows SI physical quantities
  • Finds applicable SI derived units automatically
  • Helps with dimensionality analysis, such as by offering unit factorizations and finding units for quantities.
  • Open source
  • First-class support for non-absolute temperature scales

Manual

Describes (hopefully) everything you need to know to use Rink's expression language.

Web Interface

Rink is available via the web, so that you don't have to install it.

Install

cargo install rink

Running rink will give you a CLI interface for you to enter queries.

Examples

> kWh/year -> W
0.1140795 watt (power)
> W -> J
Conformance error: 1 watt (power) != 1 joule (energy)
Suggestions: multiply left side by time, multiply right side by frequency
> gallon gasoline -> kWh
approx. 36.63388 kWh (energy)
> googol^100
1.0e10000 (dimensionless)

Library Usage

Add this to your Cargo.toml:

[dependencies]
rink = "0.3"

and this to your crate root:

extern crate rink;

License

Rink source code is licensed under the Mozilla Public License, version 2. See LICENSE-MPL for details.

The data file definitions.units is licensed under the GNU General Public License, version 3. See LICENSE-GPL for details.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work will grant the rights lined out in the MPL, including larger works with secondary licenses.

Changelog

0.3.1

  • Automatically find SI prefixes
  • Limit to one prefix on units to prevent very unintuitive results
  • Switch to linefeed from rustyline
  • Tab completion
  • Fix a serious number printing bug
  • Significantly improve canonicalizations
  • Constants in right-hand side of conversions
  • New quantities
  • Fix parsec definition
  • Reintroduce jerk, snap, crackle, and pop
  • Added π, ¢, and ħ symbols
  • Better determinism by removing hashmaps
  • Typo suggestions
  • Simple unit namespacing allowing for things like "british foot"
  • Minor error message improvements
  • Refactors
  • Russian traditional measurements

0.3.0

  • Use GNU units database instead of frink's
  • Relicense under MPL
  • Web interface
  • Multi-server IRC in bot
  • Date arithmetic
  • Exact fraction printing
  • Sandboxing
  • Add temperature scale suffixes
  • Factorize query
  • Function call syntax
  • Errors on division by zero
  • Errors on unimplemented imaginary roots
  • Inline unit definitions
  • Bot name prefix is optional in private message
  • Fix associativity of addition
  • Rename commonly confused units
  • Unit lists (hr;min;sec) in conversions
  • "Units for" query
  • Show unit definitions when they are the only term
  • Make / lower precedence than multiplication, add | which is higher precedence
  • Unit tests
  • Output token symbols instead of internal names
  • Canonicalize output units
  • Try to find a matching derived unit for queries

0.2.0

  • Errors for division by zero
  • Better conversion (->) output
  • Bignum arithmetic
  • API docs
  • IRC bot
  • Addition

0.1.1

  • Search for units.txt in standard directories
  • Rustyline

0.1.0

  • Initial release