GithubHelp home page GithubHelp logo

wahello / kalker Goto Github PK

View Code? Open in Web Editor NEW

This project forked from paddim8/kalker

0.0 1.0 0.0 2.09 MB

Kalker/kalk is a calculator with math syntax that supports user-defined variables and functions, complex numbers, and estimation of derivatives and integrals

Home Page: https://kalker.xyz

License: MIT License

Shell 0.02% JavaScript 0.26% Python 0.48% Java 0.15% Rust 88.41% TypeScript 1.64% CSS 0.07% Nix 0.49% HTML 0.78% Sass 0.07% Svelte 7.61%

kalker's Introduction

Kalker (or "kalk") is a calculator program/website that supports user-defined variables, functions, derivation, and integration. It runs on Windows, macOS, Linux, Android, and in web browsers (with WebAssembly).

Crates.io npm GitHub Docs.rs Build status

Kanban | Website - Try it out here!

Features

  • Operators: +, -, *, /, !
  • Groups: (), ⌈ceil⌉, ⌊floor⌋, [iverson]
  • Pre-defined functions and constants
  • User-defined functions and variables. f(x, y) = xy, x = 5
  • Derivative of functions (derivatives of noisy functions or of higher order can be a bit inaccurate). f'(2), sin'(-pi)
  • Integration. ∫(0, pi, sin(x) dx) or ∫(0, π, sin(x) dx), maybe sometimes be slightly off
  • Understands fairly ambiguous syntax. Eg. 2sin50 + 2xy
  • Syntax highlighting
  • Special-symbol completion on tab. Eg. write sqrt and press tab. It will be turned into
  • Sum function: sum(start, to, expression) Eg. sum(1, 3, 2n+1) is the same as 2*1+1 + 2*2+1 + 2*3+1 = 15
  • Piecewise functions: f(x) = { f(x + 1) if x <= 1; x otherwise }, pressing enter before typing the final } will make a new line without submitting
  • Load a file including predefined functions and constants. For example, if you're going to use kalker for physics, you load up your file with physics functions/constants when starting kalker. This is done either using the -i file flag or by putting files in a certain directory and then doing load filename inside kalker. More about files here
  • Different number bases: Either with a format like 0b1101, 0o5.3, 0xff or a format like 1101_2. The latter does not support letters, as they would be interpreted as variables
  • Misc: separate expressions by a semicolon to write them on the same line, use the ans variable to get the value of the previously calculated expression

Installation

Package managers

macOS

brew install kalker

Arch Linux

kalker in the AUR, eg. yay -S kalker

Nix/NixOS

Kalker is available through nixpkgs. The most up to date version is also available as a flake.

Binaries

Pre-compiled binaries for Linux, Windows, and macOS (64-bit) are available in the releases page.

Compiling

Minimum rust version: v1.36.0. Make sure you have diffutils gcc make and m4 installed. If you use windows: follow the instructions here (don't forget to install mingw-w64-x86_64-rust in MSYS2).

Cargo

Run cargo install kalker

Manually

  1. Go into the cli directory.
  2. Run cargo build --release
  3. Grab the binary from targets/release

Donation

Kalker is completely free and open source. If you wish to support further development of Kalker and contribute towards it one day getting published on the Google Play Store, you can do so here: PayPal

Libraries

There are currently three different libraries related to kalker.

  • kalk: The Rust crate that powers it all.
  • @paddim8/kalk: JavaScript bindings for kalk. This lets you use it in the browser thanks to WebAssembly.
  • @paddim8/kalk-component: A web component that runs @paddim8/kalk, which let's you use kalk in the browser with a command line-like interface.

Syntax

A more complete reference can be found on the website

Functions

Defining: name(parameter1, parameter2, ...) = expression
Example: $ f(x) = 2x+3 $

Using: name(argument1, argument2)
Example: $ f(2) $

Variables

Defining: name = expression
Example: $ x = 3 $

Using: name
Example: $ x $

Contributing

kalk and cli (Rust)

After making changes to the kalk library (in kalk/), you can easily try them out by going to the root of the project directory, and doing cargo run. This will start kalker (cli), with the new changes. If you're using Windows, you will need to follow the instructions here, but also make sure to install mingw-w64-x86_64-rust in MSYS2.

All Rust code is expected to be formatted with `rustfmt

web (Svelte, TypeScript, Sass)

Run:

  1. npm install
  2. npm run dev - this will automatically re-compile the project when changes are made

mobile (Android)

Run:

  1. npm install
  2. npx cap sync
  3. Build the project using Android Studio, or Gradle directly.

kalker's People

Contributors

paddim8 avatar kiedtl avatar kloenk avatar ysndr avatar 5225225 avatar matematikaadit avatar abrudz avatar aurelj avatar diananites avatar infinityglitch avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.