Commit Graph

289 Commits

Author SHA1 Message Date
=
56aa532768 Removed code duplication in kalk_num 2021-05-20 11:03:53 +02:00
PaddiM8
ecede70a3d kalk_web: Fixed error on empty result 2021-05-19 09:45:19 +02:00
bakk
93aa751f66 v0.4.1 2021-05-18 23:23:01 +02:00
bakk
53a8e058f3 Use KalkNum's to_string() function in to_scientific_notation() 2021-05-18 23:20:23 +02:00
bakk
3942aacd6a kalk_web: Added integral and estimation support 2021-05-18 23:08:38 +02:00
bakk
4acb1b7304 Combined to_scientific_notation() methods for both types, and added tests 2021-05-18 23:03:21 +02:00
bakk
b526ca918d Added wasm binding to KalkNum.estimate() 2021-05-18 20:40:43 +02:00
bakk
8e16aa3f1a Bumbed version to 0.4.0 2021-05-18 20:34:17 +02:00
bakk
4688827232 Fixed mod.rs errors for when rug is not used, and added some unit tests there 2021-05-18 20:02:21 +02:00
bakk
c2577ef477 Estimation/rounding for final results 2021-05-18 19:48:13 +02:00
bakk
8399d810d8 Lex special symbols as one token 2021-05-18 17:49:31 +02:00
bakk
505ffb333e Basic rounding for calculus functions 2021-05-17 23:55:20 +02:00
bakk
1971793e08 Higher order derivatation 2021-05-17 23:09:59 +02:00
bakk
ece50bf92c Improved accuracy for derivation 2021-05-17 21:27:11 +02:00
bakk
7a56322e0f Basics of derivation
Derivation implemented for function calls (only). Eg. f'(2). It is not
yet possible to do something like f''(2), but this should be implemented
in the future. It should also be possible to derive normal expressions,
but this is not yet possible.
2021-05-17 20:36:53 +02:00
bakk
126e2e86f3 Created 'Identifier' struct that contains prime count and name without primes (ticks ') 2021-05-17 20:17:34 +02:00
bakk
b2a128d4d1 Fixed integrate function test 2021-05-17 18:15:49 +02:00
bakk
455db4f0f1 Lex '**' as power sign 2021-05-17 18:14:48 +02:00
bakk
4a46fe9fc7 Switched to Simpson's rule (composite, 3/8) for integration 2021-05-17 18:05:22 +02:00
bakk
0dc2e0572f Fixed "dx" in integrals, and created calculus.rs
Previously, eg. "dx" would not be parsed as "dx" after a function, since
the parser did not keep track of whether or not it was currently inside
an integral or not, properly. This commit fixes that, and also makes it
possible to use any variable after the "d", eg. "dy". The integration
function was also put in its own file: calculus.rs.
2021-05-17 16:51:16 +02:00
bakk
651b289f4b Integration estimation
Needs more a bit more accuracy though. Currently the n value in the
trapezoidal rule is fixed.
2021-05-16 15:15:34 +02:00
bakk
439f732013 kalk_web: Updated kalk and fixed audit problems 2021-05-15 17:22:18 +02:00
bakk
4912e34ec6 Fixed zeroes being trimmed for non-rug numbers 2021-05-15 16:15:25 +02:00
PaddiM8
aefdb59882 Updated the kalk version in web related things 2021-03-31 22:10:05 +02:00
PaddiM8
f4e6265d2e kalk: Fixed type error in kalk_num/regular.rs 2021-02-22 21:21:43 +01:00
PaddiM8
4fe8f8b77c Trimming trailing zeroes for non-rug numbers 2021-02-22 20:45:58 +01:00
PaddiM8
4334c40c3e Fixed xy^z precedence, from (xy)^2 to x(y^2) 2021-02-22 20:27:42 +01:00
Oliver Waldemar
36742abf5a Created kalk_mobile capacitor app with android and electron targets 2021-01-07 16:34:55 +01:00
PaddiM8
d9c3807877 v0.3.12 2021-01-04 18:01:03 +01:00
PaddiM8
49f3522cd0 Fixed gamma and factorial functions for f64 2021-01-04 17:49:11 +01:00
PaddiM8
ae5fdf215e Fixed semantic errors 2021-01-03 00:19:22 +01:00
PaddiM8
9591241b8d kalk 1.4.1 2021-01-03 00:10:58 +01:00
PaddiM8
c0210d7c3f Removed regex dependency from kalk crate and made 'test-case' a dev-dependency 2021-01-03 00:07:30 +01:00
PaddiM8
d18e437fc2 Implemented prelude gamma function for kalk without rug 2021-01-02 19:25:10 +01:00
PaddiM8
b617ba83fe Changed to a more recent version of wasm-pack (ci), and added optimization to wasm 2021-01-02 01:00:54 +01:00
PaddiM8
613d2618a0 v0.3.10 and added npm publishing to ci 2021-01-01 17:44:56 +01:00
PaddiM8
13dc88a955 Updated kalk library README to include a JavaScript example, disabled wasm optimization, and created wasm build script 2020-12-31 01:47:09 +01:00
PaddiM8
c20b629216 Moved js_eval into Context 2020-12-31 01:03:16 +01:00
PaddiM8
c273e028b3 Return Option from js_eval 2020-12-31 00:16:39 +01:00
PaddiM8
88215dbe98 JavaScript bindings to KalkNum and ScientificNotation 2020-12-31 00:15:16 +01:00
PaddiM8
5daaa129f2 Added ToString trait to CalcError enum 2020-12-30 22:54:32 +01:00
PaddiM8
72cea91394 WebAssembly foundation 2020-12-30 22:50:39 +01:00
PaddiM8
613829320e Created a cargo feature for rug, f64 will be used instead if it's disabled 2020-12-30 16:03:02 +01:00
PaddiM8
005976e1dd Prevent self-referencing variables 2020-12-28 23:54:12 +01:00
PaddiM8
1b2ae2dba1 Improved consonant precision 2020-12-28 23:06:53 +01:00
PaddiM8
8ea11b6c24 v0.3.9 2020-12-28 19:15:25 +01:00
PaddiM8
22d9f50688 Fixed function declarations not being parsed 2020-12-28 19:13:39 +01:00
PaddiM8
2908b735e5 Interpretation timeout 2020-12-28 19:09:21 +01:00
PaddiM8
2f7af7de90 Simple equation solving, mostly using pre-existing logic from the inverter 2020-12-14 19:21:30 +01:00
PaddiM8
a29e7492f9 v0.3.8 2020-12-14 00:07:19 +01:00
PaddiM8
38a65fe144 Added sum function to symbol_table::contains_fn 2020-12-13 23:47:44 +01:00
PaddiM8
0c7e694648 Fixed bug where symbol_table::contains_fn didn't check in the BINARY_FUNCS map 2020-12-13 23:44:33 +01:00
PaddiM8
ec74089faa v0.3.7 2020-12-13 23:17:49 +01:00
PaddiM8
483e82fb03 Allow multiplication with parenthesis without star symbol 2020-12-13 23:16:47 +01:00
PaddiM8
4f02a0f0a3 Added 'Copy' to TokenKind, and added a missing line related to the sum function 2020-12-13 22:09:49 +01:00
PaddiM8
fbf901620f User-configurable precision 2020-12-13 18:12:33 +01:00
PaddiM8
0ce06d96b9 Optimised 'sum' function 2020-12-13 17:45:06 +01:00
PaddiM8
1cbc5004d5 Allow spaces in input number literals 2020-12-13 16:44:45 +01:00
PaddiM8
720a4da283 Fixed constant rounding 2020-12-13 15:53:38 +01:00
PaddiM8
56145c2f45 Store number literals as f64 2020-12-13 15:52:22 +01:00
PaddiM8
4ddb2bf33f Moved some unit logic into kalk_num 2020-12-13 15:31:11 +01:00
PaddiM8
bd86091e89 Trimming zeroes at the start of scientific notation, and scientific notation exponent value fix 2020-12-13 02:25:33 +01:00
PaddiM8
318e8b85ee Fixed tests 2020-12-13 02:11:19 +01:00
PaddiM8
0284475b2c Created KalkNum and moved output formatting from kalk_cli to kalk 2020-12-13 01:27:55 +01:00
PaddiM8
ac6bf052d7 removed un-used rug features 2020-12-11 13:17:33 +01:00
PaddiM8
035ecafe7b replaced phf with lazy_static 2020-12-10 23:40:29 +01:00
PaddiM8
ffe9ab860d updated test_percent() 2020-12-10 15:13:02 +01:00
PaddiM8
fefacbc02c fixed multiplication with percent 2020-12-10 09:27:19 +01:00
PaddiM8
cebe785b22 added percentage unit and modulo 2020-12-09 22:18:00 +01:00
PaddiM8
8e3016e9fe allow letters after underscore in variables, eg. x_a 2020-12-09 10:47:46 +01:00
PaddiM8
ea236f7e54 updated to 0.2.1 2020-12-09 09:40:26 +01:00
PaddiM8
3ece6ee5c2 fixed panic on trailing spaces 2020-12-09 09:36:49 +01:00
PaddiM8
6e40612a46 Made lexer lex '°' as 'deg'. 2020-06-18 18:06:17 +02:00
PaddiM8
2c3f70e3f2 Fixed merge issues, updated version numbers, and updated README with syntax instructions. 2020-06-18 18:03:40 +02:00
PaddiM8
b966658fa7 Merge branch 'units' 2020-06-18 17:42:36 +02:00
PaddiM8
49e4d286b3 Added units to prelude functions. 2020-06-18 17:41:57 +02:00
PaddiM8
2413ad080f Fixed parser documentation and interpreter units tests. 2020-06-18 17:06:21 +02:00
PaddiM8
f3b78e74f2 Created unit convertion expression. Syntax: <expr> to <unit> 2020-06-18 16:58:01 +02:00
PaddiM8
aa0e62af4c Changed nth_sqrt to nth_root. 2020-06-18 16:20:52 +02:00
PaddiM8
1fdfcc29c1 Implemented inversion for some prelude functions. 2020-06-18 16:20:18 +02:00
PaddiM8
a2376c9998 Made the unit be displayed in the result. 2020-06-18 02:02:48 +02:00
PaddiM8
f917b744b5 Added UnsupportedExpression errors. 2020-06-17 21:28:54 +02:00
PaddiM8
643509ce4a Fixed inversion for (function) variables and added unit tests for the inverter. 2020-06-17 17:45:46 +02:00
PaddiM8
c86b4bc2f7 Fixed the broken unit tests in the parser and completed the test_angle_units test in the interpreter. 2020-06-15 21:30:52 +02:00
PaddiM8
83668bbb84 Integrated the angle unit system with then new dynamic unit system. 2020-06-15 19:10:55 +02:00
PaddiM8
d3d2602217 Updated README with new features and updated version numbers. 2020-06-14 22:53:11 +02:00
PaddiM8
4859d78014 Added ans variable. 2020-06-14 22:33:29 +02:00
PaddiM8
80690a5575 Added semicolon support to combine several statements in one line. 2020-06-14 22:03:22 +02:00
PaddiM8
1d19f40e9f Added support for 'minus' expressions in the inverter and added some comments. 2020-06-14 21:54:39 +02:00
PaddiM8
f3c42fb95a Added support for 'minus' expressions in the inverter and added some comments. 2020-06-14 21:35:56 +02:00
PaddiM8
4c34908368 Changed inverter to instead move expressions to the LHS, like done when equations are solved in maths. Also made it multiply into parenthesis. 2020-06-14 19:23:02 +02:00
PaddiM8
6e81ea5ae1 Added some error checking to the inverter. 2020-06-13 22:18:37 +02:00
PaddiM8
7a4fefe1d0 Merge branch 'master' into units 2020-06-13 21:57:27 +02:00
PaddiM8
7b6f27186d Publish. 2020-06-13 21:42:14 +02:00
PaddiM8
05bfabb1d4 Made it possible for the inverter to invert expressions with function calls. 2020-06-13 20:06:21 +02:00
PaddiM8
71df9f5454 Created the foundation of an expression inverter. This is used to create a second *inverted* unit declaration, in order to cover both of the units. 2020-06-13 19:01:33 +02:00
PaddiM8
45adb1b526 Added the unit statement (very basic and experimental). 2020-06-13 16:19:32 +02:00
PaddiM8
ada3fc52f9 Trimmed end matches of dots in order to avoid numbers such as 1.. 2020-06-12 21:30:03 +02:00
PaddiM8
64083eca82 Updated crate versions (thought I did this in the previous commit??). 2020-06-12 21:27:01 +02:00
PaddiM8
039f79697d Merge branch 'master' of https://github.com/PaddiM8/kalk 2020-06-12 21:01:12 +02:00
PaddiM8
6f935c1ea0 Changed kalk crate version. 2020-06-12 21:00:56 +02:00
PaddiM8
bf5d02907f
Updated example code in README. 2020-06-12 21:00:03 +02:00
PaddiM8
29960043b8 Version update test. 2020-06-12 18:16:54 +02:00
PaddiM8
f39e9d6c6c Updated .travis.yml. 2020-06-12 16:10:32 +02:00
PaddiM8
2ccb439dec Created a workspace Cargo.toml to unify the library and binary. 2020-06-12 14:11:42 +02:00
PaddiM8
7a0ede8dda Fixed code in documentation in parser.rs 2020-06-12 14:10:10 +02:00
PaddiM8
11c7e5b287 Added example image and expanded feature list. 2020-06-12 00:34:50 +02:00
PaddiM8
1503336700 Added readme to Cargo.toml. 2020-06-12 00:08:14 +02:00
PaddiM8
88fd8d1bc1 Added separate readme for the library. 2020-06-12 00:06:54 +02:00
PaddiM8
fafc88f2d7 Added separate readme for the library. 2020-06-12 00:06:15 +02:00
PaddiM8
03d0ca23e9 Changed version number to 0.1.1 2020-06-11 23:53:04 +02:00
PaddiM8
aa21581cf0 Changed 'parsers' category to 'parser-implementations' 2020-06-11 23:52:12 +02:00
PaddiM8
f9283be74d Changed Cargo.toml to prepare for publish. 2020-06-11 23:47:03 +02:00
PaddiM8
3fad899daa Extended parser::eval and parser::parse documentation by explaining when None is returned. 2020-06-11 23:45:54 +02:00
PaddiM8
c42fcccabd Added simple documentation for the exposed parts. 2020-06-11 23:09:44 +02:00
PaddiM8
72baaf3e36 Added test_undefined_fn for the interpreter. 2020-06-11 22:14:43 +02:00
PaddiM8
4e2fe9eb3b Added test_fn and test_sum_fn for the interpreter. 2020-06-11 22:10:23 +02:00
PaddiM8
b3e07b710e Renamed symbol_table::contains_func to contains_fn. 2020-06-11 21:47:14 +02:00
PaddiM8
0786398d52 Made the ast module public. 2020-06-10 14:02:33 +02:00
PaddiM8
42a9e7e82a Renamed parser::parse to parser::eval and created a new parser::parse function that does not evalutate the statements. 2020-06-10 13:55:43 +02:00
PaddiM8
b4f129835a Added gamma function. 2020-06-09 20:50:05 +02:00
PaddiM8
c6f60748e2 Made the x_1 notation possible. 2020-06-09 14:59:29 +02:00
PaddiM8
280654130d Fixed lexer not ignoring whitespace properly. 2020-06-09 10:34:39 +02:00
PaddiM8
4c4b4bfede Changed lexer source to a peekable iterator, resulting in (hopefully) proper UTF-8 support. 2020-06-08 21:51:45 +02:00
PaddiM8
1861ce0719 Somewhat fixed UTF-8 support in the lexer. 2020-06-07 19:48:52 +02:00
PaddiM8
598e44ab1c Added position data to tokens. 2020-06-06 20:15:32 +02:00
PaddiM8
2074a5b15b Fixed output not displaying small-ish decimal numbers properly. 2020-06-06 17:20:40 +02:00
PaddiM8
c2e446576a Created CalcError enum and centralised error formatting into once place. 2020-06-06 16:28:48 +02:00
PaddiM8
7aececa9fb Added unit tests for unit, var, undefined var, and var decl for the interpreter. 2020-06-06 15:39:34 +02:00
PaddiM8
60384ca8a8 Added unit tests for literal, binary, and unary for the interpreter. 2020-06-05 21:57:20 +02:00
PaddiM8
5e1753410c Added unary expression unit test for the parser. 2020-06-05 19:03:16 +02:00
PaddiM8
f0889064b2 Changed lexer to allow whitespace between number literal. 2020-06-05 17:18:36 +02:00
PaddiM8
a9c4a45465 Removed test_case from test_pow(). 2020-06-05 16:20:50 +02:00
PaddiM8
3cbf4e5b4a Added pow, var_decl, fn_decl, fn_call unit tests for the parser. 2020-06-05 16:18:29 +02:00
PaddiM8
7125b18853 Cleaned up redundant code and replaced compare_enums() with PartialEq. 2020-06-05 13:47:39 +02:00
PaddiM8
ecf54b8496 Set up foundation for parser unit testing and added test_var() and test_precedence() tests. 2020-06-05 13:36:11 +02:00
PaddiM8
48033a0b13 Added unit tests for lexer. 2020-06-04 21:53:45 +02:00
PaddiM8
3a8e939ac0 Removed self.advance() code duplication in lexer. 2020-06-04 20:09:43 +02:00
PaddiM8
cbc0b340a1 Renamed to 'kalk'. 2020-06-04 19:43:43 +02:00