sharkdp / insect
- воскресенье, 25 июня 2017 г. в 03:11:44
PureScript
High precision scientific calculator with support for physical units
A high precision scientific calculator with full support for physical units.
Evaluate mathematical expressions:
1920/16*9
2^32
sqrt(1.4^2 + 1.5^2) * cos(pi/3)^2
Operators: addition (+
), subtraction (-
),
multiplication (*
, ·
, ×
), division (/
, ÷
, per
),
exponentiation (^
, **
). Full list: see Reference below.
Mathematical functions: acos
, acosh
, asin
, asinh
, atan
,
atanh
, ceil
, cos
, cosh
, exp
, floor
, gamma
, ln
, log
,
log10
, round
, sin
, sinh
, sqrt
, tan
, tanh
.
Arbitrary-precision numeric type that can handle very large (or small) exponents like 10^(10^10).
Exponential notation: 6.022e23
.
Physical units: parsing and handling, including metric prefixes:
2 min + 30 s
40 kg * 9.8 m/s^2 * 150 cm
sin(30°)
Supported units: see Reference section below.
Implicit conversions: 15 km/h * 30 min
evaluates to 7.5 km
.
Useful error messages:
> 2 watts + 4 newton meter
Unification error:
Cannot convert unit N·m (base units: kg·m²·s⁻²)
to unit W (base units: kg·m²·s⁻³)
Explicit unit conversions: the ->
conversion operator (aliases: →
, to
):
60 mph -> m/s
500 km/day -> km/h
1 mrad -> degree
52 weeks -> days
5 in + 2 ft -> cm
atan(30 cm / 2 m) -> degree
6 Mbit/s * 1.5 h -> GB
Variable assignments:
r = 6000km
vol = 4/3 * pi * r^3
density = 5 g/cm^3
vol * density -> kg
len = 20 cm
2pi*sqrt(len/g0) -> ms
Predefined constants (type list
to see them all): speed of light (c
),
Planck's constant (h_bar
), electron mass (electronMass
), elementary charge
(elementaryCharge
), magnetic constant (µ0
), electric constant (eps0
),
Bohr magneton (µ_B
), Avogadro's constant (N_A
), Boltzmann constant
(k_B
), gravitational acceleration (g0
), ...
Last result: you can use ans
(answer) to refer to the result of the
last calculation.
Unicode support:
λ = 2 × 300 µm
ν = c/λ → GHz
And more: tab completion, command history (arrow keys, Ctrl
+R
), pretty printing, syntax highlighting, ...
Operators (ordered by precedence: high to low)
Operator | Syntax |
---|---|
factorial | ! |
square/cube | ² /³ |
exponentiation | ^ , ** |
multiplication (implicit) | whitespace |
division | / , ÷ , per |
multiplication (explicit) | * , · , × |
subtraction | - |
addition | + |
unit conversion | -> , → , to |
assignment | = |
Note that implicit multiplication has a higher precedence than division, i.e. 50 cm / 2 m
will be parsed as 50 cm / (2 m)
.
Commands
Command | Syntax |
---|---|
help text | help , ? |
list of variables | list , ls , ll |
reset environment | reset |
clear screen | clear , cls |
quit (CLI) | quit , exit |
Supported units (remember that you can use tab completion). All SI-accepted units support metric prefixes.
Unit | Syntax |
---|---|
Ampere | amperes , ampere , A |
Ångström | angstrom , Å |
Astronomical unit | AU |
Bar | bar |
Barn | barn |
Becquerel | becquerel , Bq |
Bel | bel |
Bits per second | bps |
Bit | bits , bit |
Byte | Bytes , bytes , Byte , byte , B |
Candela | candela , cd |
Coulomb | coulomb , C |
Cup | cups , cup |
Day | days , day , d |
Degree | degrees , degree , deg , ° |
Electronvolt | electronvolt , eV |
Farad | farad , F |
Foot | feet , foot , ft |
Gallon | gallons , gallon , gal |
Gauss | gauss |
Gram | grams , gram , g |
Gray | gray , Gy |
Hectare | hectare , ha |
Henry | henry , H |
Hertz | hertz , Hz |
Hour | hours , hour , h |
Inch | inches , inch , in |
Joule | joules , joule , J |
Katal | katal , kat |
Kelvin | kelvin , K |
Liter | liters , liter , L |
Lumen | lumen , lm |
Lux | lux , lx |
Meter | meters , meter , m |
Miles per hour | mph |
Mile | miles , mile |
Minute | minutes , minute , min |
Mole | mole , mol |
Month | months , month |
Newton | newton , N |
Ohm | ohms , ohm , Ω |
Ounce | ounces , ounce , oz |
Pascal | pascal , Pa |
Pint | pints , pint |
Pound | pounds , pound , lb |
Radian | radians , radian , rad |
Second | seconds , second , sec , s |
Siemens | siemens , S |
Sievert | sievert , Sv |
Tablespoon | tablespoons , tablespoon , tbsp |
Teaspoon | teaspoons , teaspoon , tsp |
Tesla | tesla , T |
Tonne | tonnes , tonne , tons , ton , t |
Volt | volts , volt , V |
Watt | watts , watt , W |
Watt-hour | Wh |
Weber | weber , Wb |
Week | weeks , week |
Yard | yards , yard , yd |
Year | years , year |
In addition to the web interface, there is also a command line version which can by installed via npm:
npm install -g insect
For Arch Linux, there is a package on AUR:
yaourt -S insect
Insect is written in PureScript (see Getting Started guide). You can install all dependencies and build the whole project by running:
bower install
npm install
pulp -w browserify --skip-entry-point -m Insect --standalone Insect -O -t insect.js
Insect comes with a comprehensive set of unit tests. You can run them by calling
pulp test