Feature: Polynomials and rational functions #469

Merged
lounres merged 132 commits from feature/polynomials into dev 2022-07-28 18:04:06 +03:00

132 Commits

Author SHA1 Message Date
Gleb Minaev
a2fb14a221 Merge remote-tracking branch 'origin/feature/polynomials' into feature/polynomials 2022-07-28 12:03:12 +03:00
Gleb Minaev
c2025ee1c9 Remove Polynomial interface, fix consequent platform clashes. Add invariance. 2022-07-27 14:36:20 +03:00
Alexander Nozik
b5406e460e
Merge branch 'dev' into feature/polynomials 2022-07-27 08:26:08 +03:00
Gleb Minaev
0c6ad35c13 Simplify the version catalog usage. 2022-07-23 10:24:52 +03:00
Gleb Minaev
e1b8fcdbbf Two consecutive dots... 2022-07-20 19:10:35 +03:00
Gleb Minaev
fe4eb96dae Add docs. 2022-07-20 19:09:20 +03:00
Gleb Minaev
163a7c717a Fix description. 2022-07-20 08:28:47 +03:00
Gleb Minaev
9d4df5d8e0 Add and regenerate READMEs. Fix files' directory. 2022-07-20 08:22:41 +03:00
Gleb Minaev
f48e4483cc Last cosmetic changes. 2022-07-16 22:21:13 +03:00
Gleb Minaev
2d86cf1cc7 Remove power overriding and algebraic stub. 2022-07-16 21:55:35 +03:00
Gleb Minaev
99c7174802 Turn Polynomial data class back. 2022-07-16 20:55:10 +03:00
Gleb Minaev
58d7015782 Remove utils modules. Revive suddenly lost tests. 2022-07-16 20:15:30 +03:00
Gleb Minaev
3a91cb2579 Draft another DSL for labeled polynomials. Add variance. 2022-07-16 18:46:40 +03:00
Gleb Minaev
db19df4329 Merge branch 'dev' into feature/polynomials 2022-07-16 17:23:39 +03:00
Gleb Minaev
a1a2c41846 Add a bit more utilities for maps and refactor polynomials' code. 2022-07-16 17:13:05 +03:00
Gleb Minaev
579511a5ee Add utilities for maps. Fix some tests. 2022-07-16 16:07:03 +03:00
Gleb Minaev
4ea29c82c5 Small fix of DSL1. 2022-07-13 12:05:53 +03:00
Gleb Minaev
87aeda84d9 Added MathJax to docs. 2022-07-12 23:10:38 +03:00
Gleb Minaev
f7d159bc03 Made IntModulo implement ScaleOperations. 2022-07-12 02:05:29 +03:00
Gleb Minaev
5bc627f1d4 Rollback all breaking changes. The only breaking change now is value class. 2022-07-12 01:56:34 +03:00
Gleb Minaev
6ff79e28ac Fix names, references, etc. 2022-07-12 00:57:44 +03:00
Gleb Minaev
f726e6d0f1 Minimise appearance of new feature, leave only upgrades. 2022-07-11 23:32:15 +03:00
Gleb Minaev
51dd72e48f Finish move. 2022-07-11 22:39:13 +03:00
Gleb Minaev
1c719b9e70 Fix examples. 2022-07-11 17:52:46 +03:00
Gleb Minaev
d44a48bdb1 Moving to new modules. 2022-07-11 17:27:59 +03:00
Gleb Minaev
d3be07987c Simplify usages of LabeledPolynomial constructing fabrics. Fix bugs. Add tests for variable's interoperability. 2022-07-06 23:16:25 +03:00
Gleb Minaev
923c52737d Adapt NumberedPolynomial tests to LabeledPolynomial tests. 2022-07-06 17:13:50 +03:00
Gleb Minaev
5834fad938 Renamed constructing DSLs components. Fixed rejected NumberedPolynomial tests. 2022-07-06 00:37:46 +03:00
Gleb Minaev
45ed45bd13 Finish tests generation for numbered utilities. Also:
- Optimize a bit labeled and numbered differentiation.
- Fixed bugs in numbered anti-differentiation.
2022-07-05 03:41:52 +03:00
Gleb Minaev
e40977647d Added suppresses. 2022-07-05 03:35:56 +03:00
Gleb Minaev
e89e4e19d3 Return suppresses. 2022-07-04 03:54:28 +03:00
Gleb Minaev
39088ec36b Replaced assertFailsWith with assertFailsWithTypeAndMessage. 2022-07-04 02:36:46 +03:00
Gleb Minaev
102e83b478 Tests generation for numbered utilities in progress: finish substitutions. 2022-07-04 02:24:46 +03:00
Gleb Minaev
672a3c1552 Tests generation for numbered utilities in progress: finish map-wise substitutions. Also:
- Upgrade operations on Rational.
- Add new assertions.
- Changed a bit FIXME comments.
2022-07-03 15:47:12 +03:00
Gleb Minaev
f147636e9d Tests generation for numbered utilities in progress. 2022-07-01 14:46:05 +03:00
Gleb Minaev
c8b9951f46 Added for list utilities for rational functions. 2022-06-29 14:54:49 +03:00
Gleb Minaev
64b33aed18 Remove extra suppresses. 2022-06-29 14:53:12 +03:00
Gleb Minaev
da46ea923c Extended test for NumberedPolynomial 2022-06-28 15:07:09 +03:00
Gleb Minaev
043d292eca Added test. Fixed bug in NumberedPolynomial's DSL. 2022-06-27 17:14:03 +03:00
Gleb Minaev
0ef2258665 Removed extra suppresses. 2022-06-27 17:11:39 +03:00
Gleb Minaev
ed634013f6 Removed extra suppresses. 2022-06-27 17:07:33 +03:00
Gleb Minaev
cb7291ccb0 Little addition to polynomials design note. 2022-06-26 12:58:30 +03:00
Gleb Minaev
630d16bbee Added design notes. Also:
- Changed `xxxPolynomialSpace()` and `xxxPolynomialSpace()` functions to `xxxPolynomialSpace` value properties.
- Changed inconsistency of names `XxxRationalFunctionalSpaceYyy` and `XxxRationalFunctionSpaceYyy` in favor of second one.
2022-06-26 12:16:51 +03:00
Gleb Minaev
fc2455fe34 Merge branch 'dev' into feature/polynomials 2022-06-25 23:29:34 +03:00
Gleb Minaev
3e917baaaf Added examples for polynomials. Also:
- Fixed bug in differentiation of NumberedPolynomials.
- Fixed bug in addition and subtraction of LabeledPolynomials.
- Added references to NumberedPolynomialWithoutCheck and LabeledPolynomialWithoutCheck.
- Made NumberedRationalFunction and LabeledRationalFunction classes data. Made their constructor public.
2022-06-25 21:23:32 +03:00
Gleb Minaev
403ff93f4a Moved optimizations to branch refactor/polynomials 2022-06-25 16:01:18 +03:00
Gleb Minaev
9fc99a4c72 Removed extra copyright comment. 2022-06-25 15:45:10 +03:00
Gleb Minaev
6c8fa29304 Merge branch 'feature/polynomials-sift' into feature/polynomials 2022-06-18 01:26:33 +03:00
Gleb Minaev
d416f8cf34 Merge branch 'dev' into feature/polynomials 2022-06-18 01:25:46 +03:00
Gleb Minaev
680d23ddcb Last sift. Cleaned up labeled structures. 2022-06-18 01:25:14 +03:00
Gleb Minaev
1ea336b70e Added some test of NumberedPolynomial utilities. 2022-06-17 22:07:54 +03:00
Gleb Minaev
b5a94923b5 Fixed problems with JVM names. Exposed internal NumberedPolynomial constructor with opt-in condition. Added and upgraded tests. Fixed small bugs (mistakes). Upgraded arithmetic operations a bit. 2022-06-17 01:53:40 +03:00
Gleb Minaev
eadd521e35 Merge branch 'dev' into feature/polynomials-sift 2022-06-14 19:46:50 +03:00
Gleb Minaev
d0134bdbe9 Sift 4. Cleaned up "numbered" case. Tests are in progress. 2022-06-14 19:15:36 +03:00
Gleb Minaev
58e0715714 Removed duplicates of copyright comments. 2022-06-13 12:15:14 +03:00
Gleb Minaev
5928adfe45 Fixed merging accidents. 2022-06-13 12:08:58 +03:00
Gleb Minaev
4e08d6d877 Merge branch 'feature/polynomials-listPolynomials-applications' into feature/polynomials-sift 2022-06-13 12:04:57 +03:00
Gleb Minaev
37ad48e820 Sift # 3. Filtered last sift and usages of [ListPolynomial]s. 2022-06-13 02:06:15 +03:00
Gleb Minaev
dbb48a2a9f Added docstrings to ListPolynomial and ListRationalFunction fabric functions. 2022-06-13 01:41:04 +03:00
Gleb Minaev
ab9bba2202 Put suddenly disappeared files back. 2022-06-13 00:16:22 +03:00
Gleb Minaev
b50d8dcd23 Merge branch 'feature/polynomials-ListPolynomials' into feature/polynomials-sift
# Conflicts:
#	kmath-functions/src/commonMain/kotlin/space/kscience/kmath/functions/ListPolynomial.kt
#	kmath-functions/src/commonMain/kotlin/space/kscience/kmath/functions/ListRationalFunction.kt
#	kmath-functions/src/commonMain/kotlin/space/kscience/kmath/functions/Polynomial.kt
#	kmath-functions/src/commonMain/kotlin/space/kscience/kmath/functions/RationalFunction.kt
#	kmath-functions/src/commonMain/kotlin/space/kscience/kmath/functions/listUtilOptimized.kt
#	kmath-functions/src/commonTest/kotlin/space/kscience/kmath/functions/ListPolynomialTest.kt
#	kmath-functions/src/commonTest/kotlin/space/kscience/kmath/functions/ListPolynomialUtilTest.kt
#	kmath-functions/src/commonTest/kotlin/space/kscience/kmath/test/misc/IntModulo.kt
#	kmath-functions/src/commonTest/kotlin/space/kscience/kmath/test/misc/misc.kt
2022-06-12 23:54:30 +03:00
Gleb Minaev
94fd24d852 Fixed some tests and docstrings. Removed zero and one overridings because overrided fields are already lazily initialized. 2022-06-12 23:49:44 +03:00
Gleb Minaev
e710013800 Fixed tests. 2022-06-12 23:02:26 +03:00
Gleb Minaev
3a6aa14320 Cleaned up ListPolynomials and ListRationalFunctions:
- Added/updated docs.
- Fully (but in a simple way) implemented invocation, substitution, functional representation, derivatives and antiderivatives. Optimized reimplementation is in progress.
- Upgraded `PolynomialSpaceOfFractions` by adding a bit of laziness.
- Other little things...
2022-06-12 22:52:08 +03:00
Gleb Minaev
17703e407d Applied changes from previous sift. 2022-06-12 00:24:23 +03:00
Gleb Minaev
a6b86eeee1 Cleaned out useless code. 2022-06-11 19:31:01 +03:00
Gleb Minaev
03b92de6e0 Sifted ListPolynomial's basics. 2022-06-11 19:29:14 +03:00
Gleb Minaev
8af183a969 Fixed typos. Added docstrings. Added variable convertional methods. 2022-06-11 19:22:57 +03:00
Gleb Minaev
a2b02ef09e Sifted rest usage of non-basic polynomial things. 2022-06-11 16:15:59 +03:00
Gleb Minaev
9b51062bf7 Sift. 2022-06-11 16:09:24 +03:00
Gleb Minaev
89cdbf4d71 Changed names of algebraic stub. Added FIXMEs about KT-31420. Changed JVM/JS names style. 2022-06-11 15:58:25 +03:00
Gleb Minaev
af2e437a48 Merge branch 'master' into feature/polynomials
# Conflicts:
#	README.md
#	kmath-ast/README.md
#	kmath-complex/README.md
#	kmath-core/README.md
#	kmath-ejml/README.md
#	kmath-for-real/README.md
#	kmath-functions/README.md
#	kmath-jafama/README.md
#	kmath-kotlingrad/README.md
#	kmath-nd4j/README.md
#	kmath-tensors/README.md
2022-06-03 21:58:37 +03:00
Gleb Minaev
7f7b550674 Simplified polynomial builders. 2022-04-03 11:44:42 +03:00
Gleb Minaev
b3087c245f Fixed tests. 2022-03-25 17:46:13 +03:00
Gleb Minaev
f7286d33d2 Moved constructors to separate files. Replaced some TODOs with FIXMEs. 2022-03-25 17:18:56 +03:00
Gleb Minaev
7e328a5dbf Enhanced DSL constructor a bit. 2022-03-25 00:59:48 +03:00
Gleb Minaev
060f0ee35d Removed comparability feature. 2022-03-25 00:57:32 +03:00
Gleb Minaev
420bf05b22 Fixed annoying JVM clashes 😑 2022-03-22 19:42:59 +03:00
Gleb Minaev
0a5122a974 Prototyped DSL-like constructor for NumberedPolynomial. 2022-03-22 19:40:55 +03:00
Gleb Minaev
d75a41482d Added fabrics for LabeledPolynomial and NumberedPolynomial. 2022-03-22 17:09:33 +03:00
Gleb Minaev
5b8d6b601e Added degreeBy to Numbered.... 2022-03-22 15:37:19 +03:00
Gleb Minaev
b44c99c265 Added multivariate abstractions. 2022-03-22 15:28:34 +03:00
Gleb Minaev
39ce855075 Added constructors for RFs' spaces 2022-03-22 14:25:09 +03:00
Gleb Minaev
2f9e504357 Added division to RFs' Spaces. Added conversion to polynomial and RFs' spaces. Added requirements for RFs' denominators' changes for case of non-integral domain. Added requirements for non-zero divisor to RFs' divisions. 2022-03-22 13:58:29 +03:00
Gleb Minaev
09868f090b Enhanced tests of Double substitution. 2022-03-22 02:39:43 +03:00
Gleb Minaev
98b9a70893 Enhanced tests of Double substitution. 2022-03-22 02:37:26 +03:00
Gleb Minaev
c6d1068df4 Renamed Polynomial, etc. to ListPolynomial, etc. and AbstractPolynomial to Polynomial.
As it was advised by @CommanderTvis.
2022-03-21 23:47:10 +03:00
Gleb Minaev
51b0d232b5 Renamed AbstractPolynomialFractionsSpace to PolynomialSpaceOfFractions 2022-03-21 23:21:55 +03:00
Gleb Minaev
83d57c7295 Added RFs' interface to remove another boilerplate. Fixed bug in RFs' equalsTo. 2022-03-21 21:22:25 +03:00
Gleb Minaev
88e0dcf413 Added usage of more correct exceptions. 2022-03-21 18:26:09 +03:00
Gleb Minaev
25ec59b985 Finished with tests for Polynomial. 2022-03-20 23:22:39 +03:00
Gleb Minaev
fbc21101bb Added test. Fixed isOne and isMinusOne for Polynomial. 2022-03-20 06:26:52 +03:00
Gleb Minaev
5d4514a742 More test tools! More tests!! More fixes of stupid bugs!!! 😭 2022-03-19 19:35:41 +03:00
Gleb Minaev
90a7c4d901 Simplified use of Rational (current BigInt are hard to use and actually useless). Added tests, fixed bug. 2022-03-19 18:08:43 +03:00
Gleb Minaev
a965f5683f Added some tests and some utilities for tests. Fixed bug in utility of PolynomialSpace. 2022-03-19 16:54:30 +03:00
Gleb Minaev
85cd3b4de6 Added some test. Fixed bug in algebraicStub.kt 2022-03-18 20:39:01 +03:00
Gleb Minaev
cdc85291bc Fixed bug in implementations of polynomial operations 2022-03-18 20:04:21 +03:00
Gleb Minaev
ed2f14b68e Optimised existing substitution function. Prototyped substitution for RFs. 2022-03-18 01:47:03 +03:00
Gleb Minaev
86553e9f35 Added utilities. Rewrote polynomial-in-polynomial substitution 2022-03-17 16:28:41 +03:00
Gleb Minaev
d63c4acf10 Added space and scope fabrics for RFs 2022-03-17 16:27:02 +03:00
Gleb Minaev
ffd3ae7684 Optimized allocation during coefficients generation in Polynomial 2022-03-17 16:02:41 +03:00
Gleb Minaev
a8a95c9df7 Fixed typo 2022-03-17 02:15:48 +03:00
Gleb Minaev
e5186d469a Fixed issue with confusing countOfVariables in Numbered... 2022-03-17 02:12:40 +03:00
Gleb Minaev
2082175af5 Fixed typos. 2022-03-16 23:31:07 +03:00
Gleb Minaev
75fd920735 Deleted suddenly missed region marks and unused error classes 2022-03-16 23:22:51 +03:00
Gleb Minaev
3c9d8a4eee Deleted all region marks 2022-03-16 22:44:55 +03:00
Gleb Minaev
24944cdb16 Added support of power function to abstract structures.
Implemented exponentiation by squaring as default implementation of `power`. Updated docs in algebraicStub.kt and updated realisations in it.
2022-03-16 15:19:27 +03:00
Gleb Minaev
9aa131a9c6 Replaced Variable in Labeled... by Symbol and deleted it 2022-03-16 01:06:39 +03:00
Gleb Minaev
16cf1bc65e Implemented all derivative-like functions 2022-03-16 00:47:07 +03:00
Gleb Minaev
bb5e638b31 Added polynomial spaces and scopes fabrics 2022-03-15 20:38:27 +03:00
Gleb Minaev
1f9d8d34f5 Tried to add constructors and/or fabrics for polynomials 2022-03-15 20:18:39 +03:00
Gleb Minaev
91c9ea61da Added derivative-like functions to Polynomial 2022-03-15 18:10:11 +03:00
Gleb Minaev
1754ae0695 Added some docs 2022-03-15 16:43:22 +03:00
Gleb Minaev
79736a0a9b Forgot to remove unnecessary tailrec 2022-03-15 15:36:10 +03:00
Gleb Minaev
f86529d659 Optimized optimizedMultiply and optimizedAddMultiplied for cases of negative value of other and multiplier 2022-03-15 15:35:17 +03:00
Gleb Minaev
ebd7f799ad Attempts to implement derivatives and antiderivatives 2022-03-15 00:47:23 +03:00
Gleb Minaev
31ccf744c5 Deleted useless annotations JvmName, JsName and Suppress 2022-03-14 23:33:00 +03:00
Gleb Minaev
fb01d85197 Removed extra JSName annotations. Now everything builds 2022-03-14 22:23:50 +03:00
Gleb Minaev
44febbdd73 Processed labeledRationalFunctionUtil.kt 2022-03-14 20:19:42 +03:00
Gleb Minaev
dd820da765 1. Prototyped rest 2 algebraic structures of rational functions
2. Added `constantZero` and `constantOne` to abstract spaces and applied them instead of `ring.zero` and `ring.one`
3. Moved logic of `R.isZero` and 5 others to `AbstractRationalFunctionalSpace`
4. Deleted forgotten overridden functions of constants
5. Added KMath contributors' copyright notes
6. Added TODO 😄 The `NumberedPolynomial`'s `countOfVariables` is a confusing
2022-03-14 19:59:53 +03:00
Gleb Minaev
07f4b83722 Fixed forgotten TODOs 2022-03-14 14:18:15 +03:00
Gleb Minaev
de53d032af 1. Prototyped Rational Functions
2. Added abstract interfaces for removing boilerplates
3. Changed or added default values in interfaces
4. Renamed non-operator `equals` to `equalsTo`, and made it infix
2022-03-14 14:14:24 +03:00
Gleb Minaev
033edd3feb Removed kotlin-js-store 2022-03-13 03:55:51 +03:00
Gleb Minaev
59e65afc63 Merge remote-tracking branch 'origin/feature/polynomials' into feature/polynomials
# Conflicts:
#	kmath-functions/src/commonMain/kotlin/space/kscience/kmath/interpolation/Interpolator.kt
#	kotlin-js-store/yarn.lock
2022-03-13 03:53:29 +03:00
Gleb Minaev
93de1d5311 Added support for all polynomials. But standard utilities still are not fully implemented. 2022-03-13 03:44:16 +03:00
Gleb Minaev
571c6342dd Regenerated READMEs 2022-03-13 03:44:16 +03:00
Gleb Minaev
cab5958107 Added abstract rational functions 2022-03-13 03:44:16 +03:00
Gleb Minaev
191dd02e47 Restructured Polynomial 2022-03-13 03:44:15 +03:00
Gleb Minaev
843d63c76a Added support for all polynomials. But standard utilities still are not fully implemented. 2022-03-13 03:27:00 +03:00
Gleb Minaev
ffea8cc223 Regenerated READMEs 2022-03-13 03:25:25 +03:00
Gleb Minaev
ab9dcd83b9 Added abstract rational functions 2022-03-10 01:44:14 +03:00
Gleb Minaev
2483c56f1c Restructured Polynomial 2022-03-03 20:45:35 +03:00