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
PaddiM8
9212581ebd
Fixed tests
2020-12-13 02:11:19 +01:00
PaddiM8
f29104e489
Created KalkNum and moved output formatting from kalk_cli to kalk
2020-12-13 01:27:55 +01:00