Commit Graph

327 Commits

Author SHA1 Message Date
PaddiM8
d0d75bbbee Call a function on every item in a vector when given as parameter 2022-01-05 02:52:09 +01:00
PaddiM8
78efe183c4 Added vector operations 2022-01-05 02:49:12 +01:00
PaddiM8
92521f842b Changed KalkNum to an enum, KalkValue, creating a better type system 2022-01-05 01:08:08 +01:00
PaddiM8
139739b97e v1.1.0 2022-01-01 17:02:11 +01:00
PaddiM8
d01ce4c526 Created integration tests 2022-01-01 03:42:49 +01:00
PaddiM8
dbf3866137 Support loading files in config dir 2022-01-01 02:35:33 +01:00
PaddiM8
474b4d9016 Added permutation functions (for nPr and nCr), closes #52 2022-01-01 01:09:30 +01:00
PaddiM8
7892eee23e Bitshift operations, closes #80 2022-01-01 00:58:20 +01:00
PaddiM8
1bdecd3921 Fixed compilation error without rug 2021-12-31 23:53:39 +01:00
PaddiM8
b7631f85ca Fixed floating point error in test case 2021-12-31 23:47:12 +01:00
PaddiM8
5f40e7202e Fixed formatting of scientific notation, closes #81 2021-12-31 23:36:57 +01:00
PaddiM8
50fa59c58c Print result in another base when appropriate 2021-12-31 19:32:04 +01:00
PaddiM8
7414d73dc4 Fixed '0' being lexed as a base literal 2021-12-30 12:44:48 +01:00
PaddiM8
4495b69279 Number bases 2021-12-30 02:05:04 +01:00
PaddiM8
75460502ef Special symbols for *, /, arc functions, and subscript 2021-12-29 18:32:11 +01:00
Kiëd Llaentenn
09fafcb573 Fix compilation errors when rug feature is disabled 2021-10-08 20:03:30 +00:00
Kiëd Llaentenn
2fc11f36d8 Add tests for LCM 2021-10-04 04:06:06 +00:00
Kiëd Llaentenn
a1b7631735 Make LCM aware of Gaussian integers 2021-10-04 03:59:24 +00:00
Kiëd Llaentenn
7f0fee640d Add tests for GCD 2021-10-04 03:50:33 +00:00
Kiëd Llaentenn
71fc2c18ff Implement GCD for Gaussian integers 2021-10-04 03:40:50 +00:00
Kiëd Llaentenn
ba553f0c38 gcd: return NaN when encountering non-Gaussian integer 2021-10-03 23:33:48 +00:00
Kiëd Llaentenn
31700634af Implement basic GCD/LCM 2021-09-30 14:57:00 +00:00
Aurelien Jacobs
12869efe08 Fix undefined function: '∏'
Without this fix `prod(1,10,n)` works fine, but `∏(1,10,n)`
returns `Undefined function: '∏'.`
2021-10-03 14:44:40 +02:00
PaddiM8
1b0496ea67 v1.0.1 2021-10-01 09:21:11 +02:00
PaddiM8
b4abdded39 Updated interpreter tests to expect 0 after comparisons 2021-09-24 14:32:18 +02:00
PaddiM8
5ccdfb9f81 NaN for comparisons with imaginary numbers 2021-09-24 14:03:47 +02:00
PaddiM8
814558d46c Float error margin for comparison operations 2021-09-24 14:03:24 +02:00
PaddiM8
535a834076 Output numbers with the precision specified 2021-09-22 16:23:10 +02:00
PaddiM8
6ad51c82ea Prevent contants from being overridden 2021-09-22 15:33:58 +02:00
PaddiM8
22bec9ff40 Fixed tick symbol resulting in panic 2021-09-22 15:04:21 +02:00
5225225
d9db16a7fb Add fuzzer 2021-09-21 23:10:42 +01:00
PaddiM8
6d476a71f2 Handle new lines on windows 2021-09-04 12:14:49 +02:00
bakk
4e1dab3546 Merge branch 'master' of https://github.com/PaddiM8/kalk 2021-06-03 11:42:13 +02:00
bakk
dfc05bc11d cli: Continue on new line when missing closing group symbol 2021-06-03 11:41:56 +02:00
bakk
e0bc36482c Fixed crash when missing closing ceil, floor, | 2021-06-03 11:16:36 +02:00
Adám Brudzewsky
73c1569b17 Fix ⌋⌊, add [] 2021-06-03 00:01:20 +01:00
bakk
2c279beccd Bumped kalk library version 2021-06-02 22:51:30 +02:00
bakk
232a437849 v1.0.0 2021-06-02 22:37:24 +02:00
bakk
236d5842b9 Fixed multiplication with percent 2021-06-01 16:11:43 +02:00
bakk
e07c5e5339 Added prod function and proper sum symbol 2021-06-01 15:52:41 +02:00
bakk
349aeb7f0b kalk_web: Adjusted for piecewise and comparison operators 2021-06-01 12:30:21 +02:00
bakk
6697a37faa Removed redundant if 2021-06-01 00:22:42 +02:00
bakk
44488d285f Allow space after function name, without parenthesis 2021-06-01 00:18:14 +02:00
bakk
96a81b1359 Fixed imaginary number being ignored in eval_fn_call 2021-05-31 23:32:08 +02:00
bakk
4da372aefe Made it possible for functions to call themselves 2021-05-31 23:16:47 +02:00
bakk
5b8ad2829c Implemented piecewise 2021-05-31 18:55:37 +02:00
bakk
9ded8171bd v0.5.4 2021-05-31 14:03:28 +02:00
bakk
c5761bc3b1 Fixed custom groups not multiplying implicitly 2021-05-31 14:00:24 +02:00
bakk
fe50789cbd Comparison operators and Iverson brackets 2021-05-31 13:46:06 +02:00
bakk
2573ae16e2 Fixed new lines being parsed as numbers 2021-05-30 19:11:25 +02:00
bakk
5ad9532ca0 v0.5.3 2021-05-29 14:41:21 +02:00
bakk
7cd5a62253 Only parse one factor after '√' 2021-05-27 23:31:17 +02:00
bakk
83898e3946 Fixed eg. 'x(2x + 1)' not working inside functions 2021-05-27 23:15:53 +02:00
bakk
78e93a5f96 Updated version numbers 2021-05-27 19:44:12 +02:00
bakk
2e9a5d213b Added kalk_web to ci 2021-05-27 16:57:53 +02:00
bakk
85edae0590 Fixed pow giving undefined with lhs < 0 and rhs < 1 2021-05-26 22:13:58 +02:00
bakk
6d88da749d Show NaN and inf in a more user-friendly way 2021-05-25 22:32:50 +02:00
bakk
b6412aca1e Added functions Re(z) and Im(z) 2021-05-25 22:12:26 +02:00
bakk
a42bb5d002 Added tests for operations 2021-05-25 22:04:01 +02:00
bakk
22488f1f38 Added tests for prelude functions 2021-05-25 21:29:59 +02:00
bakk
87df8df12a Support syntax like sin2x 2021-05-24 22:32:33 +02:00
bakk
643b92c23d Support syntax like sinxdx in integrals 2021-05-24 22:05:35 +02:00
bakk
f944e3cebc Keep previous variable value after integration using the same identifier 2021-05-24 21:51:25 +02:00
bakk
c4c768374f Made recursion possible 2021-05-24 21:32:58 +02:00
bakk
d1365b5982 Round result slightly to get a more 'lagom' amount of decimals 2021-05-24 18:22:03 +02:00
bakk
e40428016f kalk v2.0.0 2021-05-23 18:43:22 +02:00
bakk
04644dc54f Added tests for kalk_num estimation, rounding, and to string functions 2021-05-23 18:17:19 +02:00
bakk
9e0c6a732b abs() the imaginary value on to_string(), since the sign is already there 2021-05-23 16:08:25 +02:00
bakk
eaf712e01f Added tests for calculus.rs 2021-05-23 15:58:23 +02:00
bakk
33de7f034c Fixed rounding for complex numbers resulting in 0 2021-05-23 15:04:12 +02:00
bakk
b0a1d3581b Integration with complex numbers 2021-05-23 02:21:35 +02:00
bakk
ab6e758726 Allow a comma before 'dx' in integrals 2021-05-23 01:56:25 +02:00
bakk
0e425fbf90 Allow function calls without parenthesis even with a variable as argument 2021-05-23 01:42:10 +02:00
bakk
7fd6d28e1d Always round values <= 10^-16 down to zero 2021-05-23 01:30:10 +02:00
bakk
0bbf1c4974 Finding square roots for estimate() 2021-05-23 01:10:22 +02:00
bakk
34e374b346 Created synonym 'integral' for 'integrate' 2021-05-23 00:55:35 +02:00
bakk
7b635079c8 Fixed estimation skipping values with no estimation, when the real/complex value had an estimation 2021-05-23 00:52:43 +02:00
bakk
c80f58433c Convert fract to f64 before turning into string in estimate() 2021-05-23 00:44:58 +02:00
bakk
7af71ff332 Avoid panic because of invalid number literal 2021-05-23 00:04:50 +02:00
bakk
594d139345 Fixed integration with expressions like xdx 2021-05-22 23:59:53 +02:00
bakk
a60dc2bf65 Fixed eg. 'xy' being parsed as 'y' inside functions 2021-05-22 22:40:24 +02:00
bakk
cff40be924 Made sum() and ans compatible with complex numbers 2021-05-22 22:03:35 +02:00
bakk
637c3e331b Implemented complex variants of prelude functions 2021-05-22 20:47:10 +02:00
bakk
7898f40021 Adjusted estimation and rounding to include imaginary numbers 2021-05-20 20:50:24 +02:00
bakk
328810d29d Division with complex numbers 2021-05-20 19:50:59 +02:00
bakk
ee3082ad66 Made complex numbers work without rug 2021-05-20 19:26:03 +02:00
=
22ac36bb4a Fixed negative scientific notation 2021-05-20 15:19:26 +02:00
=
2936a58620 Basics of complex numbers 2021-05-20 15:11:32 +02:00
=
869708b454 Removed code duplication in kalk_num 2021-05-20 11:03:53 +02:00
PaddiM8
d21202a446 kalk_web: Fixed error on empty result 2021-05-19 09:45:19 +02:00
bakk
150a0c7632 v0.4.1 2021-05-18 23:23:01 +02:00
bakk
4c92062117 Use KalkNum's to_string() function in to_scientific_notation() 2021-05-18 23:20:23 +02:00
bakk
121aafa118 kalk_web: Added integral and estimation support 2021-05-18 23:08:38 +02:00
bakk
e04742695a Combined to_scientific_notation() methods for both types, and added tests 2021-05-18 23:03:21 +02:00
bakk
cc776367fa Added wasm binding to KalkNum.estimate() 2021-05-18 20:40:43 +02:00
bakk
93830090b5 Bumbed version to 0.4.0 2021-05-18 20:34:17 +02:00
bakk
09c99c9169 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
dea2ab9ee2 Estimation/rounding for final results 2021-05-18 19:48:13 +02:00
bakk
2636f51077 Lex special symbols as one token 2021-05-18 17:49:31 +02:00
bakk
4db84aa441 Basic rounding for calculus functions 2021-05-17 23:55:20 +02:00
bakk
7f32829921 Higher order derivatation 2021-05-17 23:09:59 +02:00
bakk
ff6ad6a10d Improved accuracy for derivation 2021-05-17 21:27:11 +02:00
bakk
15c30cfeee 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
9acdd71589 Created 'Identifier' struct that contains prime count and name without primes (ticks ') 2021-05-17 20:17:34 +02:00
bakk
374a449eab Fixed integrate function test 2021-05-17 18:15:49 +02:00
bakk
0c454fb6f4 Lex '**' as power sign 2021-05-17 18:14:48 +02:00
bakk
48e94b1cdb Switched to Simpson's rule (composite, 3/8) for integration 2021-05-17 18:05:22 +02:00
bakk
08617640a5 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
1d9237d30d 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
4cfd563b38 kalk_web: Updated kalk and fixed audit problems 2021-05-15 17:22:18 +02:00
bakk
d5c991ffdf Fixed zeroes being trimmed for non-rug numbers 2021-05-15 16:15:25 +02:00
PaddiM8
277b1ed4c0 Updated the kalk version in web related things 2021-03-31 22:10:05 +02:00
PaddiM8
4751bbffe0 kalk: Fixed type error in kalk_num/regular.rs 2021-02-22 21:21:43 +01:00
PaddiM8
561bd61c3f Trimming trailing zeroes for non-rug numbers 2021-02-22 20:45:58 +01:00
PaddiM8
31878f9f1f Fixed xy^z precedence, from (xy)^2 to x(y^2) 2021-02-22 20:27:42 +01:00
Oliver Waldemar
ecc0fd5dcf Created kalk_mobile capacitor app with android and electron targets 2021-01-07 16:34:55 +01:00
PaddiM8
93514906f3 v0.3.12 2021-01-04 18:01:03 +01:00
PaddiM8
2714ed0f8c Fixed gamma and factorial functions for f64 2021-01-04 17:49:11 +01:00
PaddiM8
9de16e0fbe Fixed semantic errors 2021-01-03 00:19:22 +01:00
PaddiM8
a84e1e6527 kalk 1.4.1 2021-01-03 00:10:58 +01:00
PaddiM8
dd63bace58 Removed regex dependency from kalk crate and made 'test-case' a dev-dependency 2021-01-03 00:07:30 +01:00
PaddiM8
0c802df3d5 Implemented prelude gamma function for kalk without rug 2021-01-02 19:25:10 +01:00
PaddiM8
1df4932e25 Changed to a more recent version of wasm-pack (ci), and added optimization to wasm 2021-01-02 01:00:54 +01:00
PaddiM8
416064ac53 v0.3.10 and added npm publishing to ci 2021-01-01 17:44:56 +01:00
PaddiM8
bf06c7789d 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
f81e1731b3 Moved js_eval into Context 2020-12-31 01:03:16 +01:00
PaddiM8
3fc5a71b34 Return Option from js_eval 2020-12-31 00:16:39 +01:00
PaddiM8
b59d3e1f51 JavaScript bindings to KalkNum and ScientificNotation 2020-12-31 00:15:16 +01:00
PaddiM8
8a30ee7163 Added ToString trait to CalcError enum 2020-12-30 22:54:32 +01:00
PaddiM8
efbeb0857f WebAssembly foundation 2020-12-30 22:50:39 +01:00
PaddiM8
8014a61f1a Created a cargo feature for rug, f64 will be used instead if it's disabled 2020-12-30 16:03:02 +01:00
PaddiM8
e8c362c72e Prevent self-referencing variables 2020-12-28 23:54:12 +01:00
PaddiM8
865947dccd Improved consonant precision 2020-12-28 23:06:53 +01:00
PaddiM8
6518194582 v0.3.9 2020-12-28 19:15:25 +01:00
PaddiM8
17f5a0604e Fixed function declarations not being parsed 2020-12-28 19:13:39 +01:00
PaddiM8
b7153d68b7 Interpretation timeout 2020-12-28 19:09:21 +01:00
PaddiM8
58bb2fd60f Simple equation solving, mostly using pre-existing logic from the inverter 2020-12-14 19:21:30 +01:00
PaddiM8
9cacb0c57a v0.3.8 2020-12-14 00:07:19 +01:00
PaddiM8
7c05d1ab22 Added sum function to symbol_table::contains_fn 2020-12-13 23:47:44 +01:00
PaddiM8
fd29599e31 Fixed bug where symbol_table::contains_fn didn't check in the BINARY_FUNCS map 2020-12-13 23:44:33 +01:00
PaddiM8
98d29bcaa6 v0.3.7 2020-12-13 23:17:49 +01:00
PaddiM8
912779811c Allow multiplication with parenthesis without star symbol 2020-12-13 23:16:47 +01:00
PaddiM8
c92512d79d Added 'Copy' to TokenKind, and added a missing line related to the sum function 2020-12-13 22:09:49 +01:00
PaddiM8
339d98e2c6 User-configurable precision 2020-12-13 18:12:33 +01:00
PaddiM8
1233ad4269 Optimised 'sum' function 2020-12-13 17:45:06 +01:00
PaddiM8
a1af433ebd Allow spaces in input number literals 2020-12-13 16:44:45 +01:00
PaddiM8
6d8e182578 Fixed constant rounding 2020-12-13 15:53:38 +01:00
PaddiM8
c6d75104b3 Store number literals as f64 2020-12-13 15:52:22 +01:00
PaddiM8
c7b0b27117 Moved some unit logic into kalk_num 2020-12-13 15:31:11 +01:00
PaddiM8
98014166a9 Trimming zeroes at the start of scientific notation, and scientific notation exponent value fix 2020-12-13 02:25:33 +01:00