Skip to content

Commit f8b2326

Browse files
committed
Update Readme.
Move last projects from JVM to MPP. Update changelog.
1 parent d64a117 commit f8b2326

File tree

38 files changed

+205
-235
lines changed

38 files changed

+205
-235
lines changed

.github/workflows/pages.yml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,8 @@ jobs:
1515
with:
1616
java-version: 21
1717
distribution: liberica
18-
- name: Cache konan
19-
uses: actions/cache@v3
20-
with:
21-
path: ~/.konan
22-
key: ${{ runner.os }}-gradle-${{ hashFiles('*.gradle.kts') }}
23-
restore-keys: |
24-
${{ runner.os }}-gradle-
18+
- name: Gradle Wrapper Validation
19+
uses: gradle/wrapper-validation-action@v1.0.4
2520
- uses: gradle/gradle-build-action@v3
2621
with:
2722
arguments: dokkaGenerate --no-parallel

CHANGELOG.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,33 @@
33
## Unreleased
44

55
### Added
6-
- More statistics functions by @qwazer
7-
- Fit accessors with Attribute
86

97
### Changed
10-
- Upgrade tensorflow version to 1.0.0
118

129
### Deprecated
1310

1411
### Removed
15-
- Support for ND4J
1612

1713
### Fixed
1814

1915
### Security
2016

17+
## 0.5.0 - 2026-01-09
18+
19+
### Added
20+
21+
- More statistics functions by @qwazer
22+
- Fit accessors with Attribute
23+
24+
### Changed
25+
26+
- Flag attributes are replaced with boolean attributes to properly support missing values
27+
- Upgrade tensorflow version to 1.0.0
28+
29+
### Removed
30+
31+
- Support for ND4J
32+
2133
## 0.4.2 - 2025-01-27
2234

2335
### Added

README.md

Lines changed: 17 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@
55

66
# KMath
77

8-
Could be pronounced as `key-math`. The **K**otlin **Math**ematics library was initially intended as a Kotlin-based
9-
analog to Python's NumPy library. Later we found that kotlin is much more flexible language and allows superior
10-
architecture designs. In contrast to `numpy` and `scipy` it is modular and has a lightweight core. The `numpy`-like
11-
experience could be achieved with [kmath-for-real](/kmath-for-real) extension module.
8+
Could be pronounced as `key-math`. The **K**otlin **Math**ematics library was initially intended as a Kotlin-based analog to Python's NumPy library. Later we found that kotlin is a much more flexible language and allows superior architecture designs. In contrast to `numpy` and `scipy` it is modular and has a lightweight core. The `numpy`-like experience could be achieved with [kmath-for-real](kmath-for-real) extension module.
129

1310
[Documentation site](https://SciProgCentre.github.io/kmath/)
1411

@@ -34,23 +31,25 @@ experience could be achieved with [kmath-for-real](/kmath-for-real) extension mo
3431
* Be like NumPy. It was the idea at the beginning, but we decided that we can do better in API.
3532
* Provide the best performance out of the box. We have specialized libraries for that. Need only API wrappers for them.
3633
* Cover all cases as immediately and in one bundle. We will modularize everything and add new features gradually.
37-
* Provide specialized behavior in the core. API is made generic on purpose, so one needs to specialize for types, like
38-
for `Double` in the core. For that we will have specialization modules like `kmath-for-real`, which will give better
39-
experience for those, who want to work with specific types.
34+
* Provide specialized behavior in the core. API is made generic on purpose, so one needs to specialize for types, like for `Float64` in the core. For that we will have specialization modules like [kmath-for-real](kmath-for-real), which will give a better experience for those who want to work with specific types.
35+
36+
## Contributing
37+
38+
The project requires a lot of additional work. The most important thing we need is feedback about what features are required the most. Feel free to create feature requests. We are also welcome to code contributions, especially in issues marked with [good first issue](https://github.com/SciProgCentre/kmath/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) label.
39+
40+
Project roadmap will be available at [GitHub Projects](https://github.com/orgs/SciProgCentre/projects/3).
4041

4142
## Features and stability
4243

43-
KMath is a modular library. Different modules provide different features with different API stability guarantees. All
44-
core modules are released with the same version, but with different API change policy. The features are described in
45-
module definitions below. The module stability could have the following levels:
44+
KMath is a modular library. Different modules provide different features with different API stability guarantees. All core modules are released with the same version, but with different API change policy. The features are described in module definitions below. The module stability could have the following levels:
4645

4746
* **PROTOTYPE**. On this level there are no compatibility guarantees. All methods and classes form those modules could
4847
break any moment. You can still use it, but be sure to fix the specific version.
4948
* **EXPERIMENTAL**. The general API is decided, but some changes could be made. Volatile API is marked
5049
with `@UnstableKMathAPI` or other stability warning annotations.
5150
* **DEVELOPMENT**. API breaking generally follows semantic versioning ideology. There could be changes in minor
5251
versions, but not in patch versions. API is protected
53-
with [binary-compatibility-validator](https://github.com/Kotlin/binary-compatibility-validator) tool.
52+
with [binary-compatibility-validator](https://kotlinlang.org/docs/gradle-binary-compatibility-validation.html) tool.
5453
* **STABLE**. The API stabilized. Breaking changes are allowed only in major releases.
5554

5655
## Modules
@@ -60,10 +59,6 @@ module definitions below. The module stability could have the following levels:
6059
>
6160
> **Maturity**: EXPERIMENTAL
6261
63-
### [examples](examples)
64-
>
65-
> **Maturity**: EXPERIMENTAL
66-
6762
### [kmath-ast](kmath-ast)
6863
>
6964
> **Maturity**: EXPERIMENTAL
@@ -98,9 +93,9 @@ module definitions below. The module stability could have the following levels:
9893
> **Features:**
9994
> - [algebras](kmath-core/src/commonMain/kotlin/space/kscience/kmath/operations/Algebra.kt) : Algebraic structures like rings, spaces and fields.
10095
> - [nd](kmath-core/src/commonMain/kotlin/space/kscience/kmath/structures/StructureND.kt) : Many-dimensional structures and operations on them.
101-
> - [linear](kmath-core/src/commonMain/kotlin/space/kscience/kmath/operations/Algebra.kt) : Basic linear algebra operations (sums, products, etc.), backed by the `Space` API. Advanced linear algebra operations like matrix inversion and LU decomposition.
96+
> - [linear](kmath-core/src/commonMain/kotlin/space/kscience/kmath/operations/Algebra.kt) : Basic linear algebra operations (sums, products, etc.), backed by the `Space` API.
10297
> - [buffers](kmath-core/src/commonMain/kotlin/space/kscience/kmath/structures/Buffers.kt) : One-dimensional structure
103-
> - [expressions](kmath-core/src/commonMain/kotlin/space/kscience/kmath/expressions) : By writing a single mathematical expression once, users will be able to apply different types of
98+
> - [expressions](kmath-core/src/commonMain/kotlin/space/kscience/kmath/expressions) : By writing a single mathematical expression once, users will be able to apply different types of
10499
> - [domains](kmath-core/src/commonMain/kotlin/space/kscience/kmath/domains) : Domains
105100
> - [autodiff](kmath-core/src/commonMain/kotlin/space/kscience/kmath/expressions/SimpleAutoDiff.kt) : Automatic differentiation
106101
> - [Parallel linear algebra](kmath-core/#) : Parallel implementation for `LinearAlgebra`
@@ -183,17 +178,6 @@ One can still use generic algebras though.
183178
>
184179
> **Maturity**: PROTOTYPE
185180
186-
### [kmath-nd4j](kmath-nd4j)
187-
> ND4J NDStructure implementation and according NDAlgebra classes
188-
>
189-
> **Maturity**: DEPRECATED
190-
>
191-
> **Features:**
192-
> - [nd4jarraystructure](kmath-nd4j/#) : NDStructure wrapper for INDArray
193-
> - [nd4jarrayrings](kmath-nd4j/#) : Rings over Nd4jArrayStructure of Int and Long
194-
> - [nd4jarrayfields](kmath-nd4j/#) : Fields over Nd4jArrayStructure of Float and Double
195-
196-
197181
### [kmath-ojalgo](kmath-ojalgo)
198182
> Ojalgo bindings for kmath
199183
>
@@ -239,34 +223,21 @@ One can still use generic algebras though.
239223

240224
## Multi-platform support
241225

242-
KMath is developed as a multi-platform library, which means that most of the interfaces are declared in the
243-
[common source sets](/kmath-core/src/commonMain) and implemented there wherever it is possible. In some cases, features
244-
are delegated to platform-specific implementations even if they could be provided in the common module for performance
245-
reasons. Currently, Kotlin/JVM is the primary platform, however, Kotlin/Native and Kotlin/JS contributions and
246-
feedback are also welcome.
226+
KMath is developed as a multi-platform library, which means that most of the interfaces are declared in common source sets like [common source sets](kmath-core/src/commonMain) and implemented there wherever it is possible. In some cases, features are delegated to platform-specific implementations even if they could be provided in the common module for performance reasons. Currently, Kotlin/JVM is the primary platform, however, Kotlin/Native, Kotlin/JS and Kotlin/Wasm contributions and feedback are also welcome.
247227

248228
## Performance
249229

250-
Calculation of performance is one of the major goals of KMath in the future, but in some cases it is impossible to
251-
achieve both
252-
performance and flexibility.
230+
Performance of mathematical operations is hard to achieve without a lot of effort. KMath focus is to provide a reasonable performance for common cases, out of the box and good interoperability with optimized libraries for edge cases. For example, one could prototype an algorithm using KMath core implementations and then use Multik or Ojalgo for performance-critical parts just by adding a dependency and algebra context switch.
253231

254-
We expect to focus on creating a convenient universal API first and then work on increasing performance for specific
255-
cases. We expect the worst KMath benchmarks will perform better than native Python, but worse than optimized
256-
native/SciPy (mostly due to boxing operations on primitive numbers). The best performance of optimized parts could be
257-
better than SciPy.
232+
As for core implementations, we expect to focus on creating a convenient universal API first and then work on increasing performance for specific cases. We expect the worst KMath benchmarks will perform better than native Python, but worse than optimized native/SciPy (mostly due to boxing operations on primitive numbers). The best performance of optimized parts could be better than SciPy.
258233

259234
## Requirements
260235

261-
KMath currently relies on JDK 11 for compilation and execution of Kotlin-JVM part. We recommend using GraalVM-CE or
262-
Oracle GraalVM for execution to get better performance.
236+
KMath currently relies on JDK 21 for compilation and execution of Kotlin-JVM part.
263237

264238
### Repositories
265239

266-
Release and development artifacts are accessible from mipt-npm [Space](https://www.jetbrains.com/space/)
267-
repository `https://maven.pkg.jetbrains.space/mipt-npm/p/sci/maven` (see documentation of
268-
[Kotlin Multiplatform](https://kotlinlang.org/docs/reference/multiplatform.html) for more details). The repository could
269-
be reached through [repo.kotlin.link](https://repo.kotlin.link) proxy:
240+
Intermediate releases are published to [Kotlin.Link](https://repo.kotlin.link) repository.
270241

271242
```kotlin
272243
repositories {
@@ -278,11 +249,3 @@ dependencies {
278249
// api("space.kscience:kmath-core-jvm:$version") for jvm-specific version
279250
}
280251
```
281-
282-
## Contributing
283-
284-
The project requires a lot of additional work. The most important thing we need is feedback about what features are
285-
required the most. Feel free to create feature requests. We are also welcome to code contributions, especially in issues
286-
marked
287-
with [good first issue](hhttps://github.com/SciProgCentre/kmath/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
288-
label.

benchmarks/README.md

Lines changed: 67 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -2,120 +2,119 @@
22

33
## Report for benchmark configuration <code>main</code>
44

5-
* Run on OpenJDK 64-Bit Server VM (build 17.0.11+9) with Java process:
5+
* Run on OpenJDK 64-Bit Server VM (build 21.0.9+10-LTS) with Java process:
66

77
```
8-
C:\Users\altavir\scoop\apps\gradle\current\.gradle\jdks\eclipse_adoptium-17-amd64-windows.2\bin\java.exe -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant
8+
C:\Users\altavir\.gradle\jdks\eclipse_adoptium-21-amd64-windows.2\bin\java.exe -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant
99
```
10-
* JMH 1.21 was used in `thrpt` mode with 5 warmup iterations by 10 s and 5 measurement iterations by 10 s.
10+
* JMH 1.37 was used in `thrpt` mode with 5 warmup iterations by 10 s and 5 measurement iterations by 10 s.
1111
### [ArrayBenchmark](src/jvmMain/kotlin/space/kscience/kmath/benchmarks/ArrayBenchmark.kt)
1212

1313
| Benchmark | Score |
1414
|:---------:|:-----:|
15-
|`benchmarkArrayRead`|3.9E+06 &plusmn; 3.4E+05 ops/s|
16-
|`benchmarkBufferRead`|4.0E+06 &plusmn; 3.2E+05 ops/s|
17-
|`nativeBufferRead`|3.9E+06 &plusmn; 2.0E+05 ops/s|
15+
|`benchmarkArrayRead`|3.9E+06 &plusmn; 1.1E+06 ops/s|
16+
|`benchmarkBufferRead`|4.0E+06 &plusmn; 2.2E+05 ops/s|
17+
|`nativeBufferRead`|4.0E+06 &plusmn; 1.7E+05 ops/s|
1818
### [BigIntBenchmark](src/jvmMain/kotlin/space/kscience/kmath/benchmarks/BigIntBenchmark.kt)
1919

2020
| Benchmark | Score |
2121
|:---------:|:-----:|
22-
|`jvmAdd`|3.1E+07 &plusmn; 1.8E+07 ops/s|
23-
|`jvmAddLarge`|4.5E+04 &plusmn; 5.5E+03 ops/s|
24-
|`jvmMultiply`|3.6E+07 &plusmn; 1.7E+07 ops/s|
25-
|`jvmMultiplyLarge`|1.9E+02 &plusmn; 95 ops/s|
26-
|`jvmParsing10`|4.0E+06 &plusmn; 8.8E+05 ops/s|
27-
|`jvmParsing16`|3.6E+06 &plusmn; 6.5E+05 ops/s|
28-
|`jvmPower`|25 &plusmn; 1.4 ops/s|
29-
|`jvmSmallAdd`|5.7E+07 &plusmn; 9.7E+05 ops/s|
30-
|`kmAdd`|2.6E+07 &plusmn; 8.8E+05 ops/s|
31-
|`kmAddLarge`|2.3E+04 &plusmn; 1.2E+03 ops/s|
32-
|`kmMultiply`|3.8E+07 &plusmn; 5.5E+06 ops/s|
33-
|`kmMultiplyLarge`|36 &plusmn; 3.8 ops/s|
34-
|`kmParsing10`|2.5E+06 &plusmn; 1.4E+05 ops/s|
35-
|`kmParsing16`|3.7E+06 &plusmn; 4.7E+05 ops/s|
36-
|`kmPower`|6.6 &plusmn; 1.0 ops/s|
37-
|`kmSmallAdd`|2.0E+07 &plusmn; 1.7E+06 ops/s|
22+
|`jvmAdd`|2.9E+07 &plusmn; 2.8E+06 ops/s|
23+
|`jvmAddLarge`|3.8E+04 &plusmn; 6.4E+03 ops/s|
24+
|`jvmMultiply`|5.3E+07 &plusmn; 6.1E+06 ops/s|
25+
|`jvmMultiplyLarge`|2.2E+02 &plusmn; 1.9 ops/s|
26+
|`jvmParsing10`|3.9E+06 &plusmn; 4.7E+05 ops/s|
27+
|`jvmParsing16`|3.1E+06 &plusmn; 4.6E+05 ops/s|
28+
|`jvmPower`|24 &plusmn; 1.7 ops/s|
29+
|`jvmSmallAdd`|4.7E+07 &plusmn; 4.6E+06 ops/s|
30+
|`kmAdd`|2.3E+07 &plusmn; 5.1E+06 ops/s|
31+
|`kmAddLarge`|2.6E+04 &plusmn; 3.0E+02 ops/s|
32+
|`kmMultiply`|3.7E+07 &plusmn; 2.9E+06 ops/s|
33+
|`kmMultiplyLarge`|34 &plusmn; 2.8 ops/s|
34+
|`kmParsing10`|2.5E+06 &plusmn; 1.5E+05 ops/s|
35+
|`kmParsing16`|4.0E+06 &plusmn; 2.4E+05 ops/s|
36+
|`kmPower`|6.5 &plusmn; 0.69 ops/s|
37+
|`kmSmallAdd`|1.6E+07 &plusmn; 8.0E+05 ops/s|
3838
### [BufferBenchmark](src/jvmMain/kotlin/space/kscience/kmath/benchmarks/BufferBenchmark.kt)
3939

4040
| Benchmark | Score |
4141
|:---------:|:-----:|
42-
|`bufferViewReadWrite`|6.0E+06 &plusmn; 7.4E+05 ops/s|
43-
|`bufferViewReadWriteSpecialized`|7.6E+05 &plusmn; 1.1E+04 ops/s|
44-
|`complexBufferReadWrite`|2.4E+06 &plusmn; 2.7E+05 ops/s|
45-
|`doubleArrayReadWrite`|7.3E+06 &plusmn; 4.3E+05 ops/s|
46-
|`doubleBufferReadWrite`|7.3E+06 &plusmn; 3.4E+05 ops/s|
42+
|`bufferViewReadWrite`|5.4E+06 &plusmn; 3.8E+05 ops/s|
43+
|`bufferViewReadWriteSpecialized`|5.0E+06 &plusmn; 1.2E+06 ops/s|
44+
|`complexBufferReadWrite`|2.2E+06 &plusmn; 5.7E+04 ops/s|
45+
|`doubleArrayReadWrite`|6.9E+06 &plusmn; 1.2E+06 ops/s|
46+
|`doubleBufferReadWrite`|6.6E+06 &plusmn; 1.1E+06 ops/s|
4747
### [DotBenchmark](src/jvmMain/kotlin/space/kscience/kmath/benchmarks/DotBenchmark.kt)
4848

4949
| Benchmark | Score |
5050
|:---------:|:-----:|
51-
|`bufferedDot`|1.3 &plusmn; 0.032 ops/s|
52-
|`cmDot`|0.42 &plusmn; 0.20 ops/s|
53-
|`cmDotWithConversion`|0.83 &plusmn; 0.12 ops/s|
54-
|`ejmlDot`|2.6 &plusmn; 0.049 ops/s|
55-
|`ejmlDotWithConversion`|2.5 &plusmn; 0.075 ops/s|
56-
|`multikDot`|25 &plusmn; 0.52 ops/s|
57-
|`ojalgoDot`|11 &plusmn; 1.3 ops/s|
58-
|`parallelDot`|11 &plusmn; 0.17 ops/s|
59-
|`tensorDot`|1.1 &plusmn; 0.028 ops/s|
60-
|`tfDot`|4.7 &plusmn; 0.14 ops/s|
51+
|`bufferedDot`|1.2 &plusmn; 0.20 ops/s|
52+
|`cmDot`|0.36 &plusmn; 0.14 ops/s|
53+
|`cmDotWithConversion`|0.80 &plusmn; 0.092 ops/s|
54+
|`ejmlDot`|2.9 &plusmn; 0.61 ops/s|
55+
|`ejmlDotWithConversion`|2.7 &plusmn; 0.15 ops/s|
56+
|`multikDot`|23 &plusmn; 2.4 ops/s|
57+
|`ojalgoDot`|11 &plusmn; 0.79 ops/s|
58+
|`parallelDot`|9.4 &plusmn; 1.3 ops/s|
59+
|`tensorDot`|1.0 &plusmn; 0.15 ops/s|
60+
|`tfDot`|3.9 &plusmn; 0.90 ops/s|
6161
### [ExpressionsInterpretersBenchmark](src/jvmMain/kotlin/space/kscience/kmath/benchmarks/ExpressionsInterpretersBenchmark.kt)
6262

6363
| Benchmark | Score |
6464
|:---------:|:-----:|
65-
|`asmGenericExpression`|12 &plusmn; 0.099 ops/s|
66-
|`asmPrimitiveExpression`|26 &plusmn; 0.57 ops/s|
67-
|`asmPrimitiveExpressionArray`|74 &plusmn; 1.7 ops/s|
68-
|`functionalExpression`|5.3 &plusmn; 0.015 ops/s|
69-
|`justCalculate`|74 &plusmn; 0.85 ops/s|
70-
|`mstExpression`|4.2 &plusmn; 0.10 ops/s|
71-
|`rawExpression`|25 &plusmn; 0.74 ops/s|
65+
|`asmGenericExpression`|15 &plusmn; 1.8 ops/s|
66+
|`asmPrimitiveExpression`|27 &plusmn; 0.98 ops/s|
67+
|`asmPrimitiveExpressionArray`|78 &plusmn; 14 ops/s|
68+
|`functionalExpression`|4.4 &plusmn; 0.25 ops/s|
69+
|`justCalculate`|79 &plusmn; 5.4 ops/s|
70+
|`mstExpression`|4.2 &plusmn; 0.93 ops/s|
71+
|`rawExpression`|25 &plusmn; 5.0 ops/s|
7272
### [IntegrationBenchmark](src/jvmMain/kotlin/space/kscience/kmath/benchmarks/IntegrationBenchmark.kt)
7373

7474
| Benchmark | Score |
7575
|:---------:|:-----:|
76-
|`complexIntegration`|2.6E+03 &plusmn; 46 ops/s|
77-
|`doubleIntegration`|2.8E+03 &plusmn; 1.1E+02 ops/s|
76+
|`complexIntegration`|2.2E+03 &plusmn; 3.0E+02 ops/s|
77+
|`doubleIntegration`|2.3E+03 &plusmn; 6.4E+02 ops/s|
7878
### [MatrixInverseBenchmark](src/jvmMain/kotlin/space/kscience/kmath/benchmarks/MatrixInverseBenchmark.kt)
7979

8080
| Benchmark | Score |
8181
|:---------:|:-----:|
82-
|`cmLUPInversion`|2.1E+03 &plusmn; 35 ops/s|
83-
|`ejmlInverse`|1.2E+03 &plusmn; 27 ops/s|
84-
|`kmathLupInversion`|4.0E+02 &plusmn; 52 ops/s|
85-
|`kmathParallelLupInversion`|4.0E+02 &plusmn; 9.6 ops/s|
86-
|`ojalgoInverse`|2.1E+03 &plusmn; 3.3E+02 ops/s|
87-
### [MinStatisticBenchmark.kt](src/jvmMain/kotlin/space/kscience/kmath/benchmarks/MinStatisticBenchmark.kt)
82+
|`cmLUPInversion`|2.0E+03 &plusmn; 1.1E+02 ops/s|
83+
|`ejmlInverse`|1.2E+03 &plusmn; 29 ops/s|
84+
|`kmathLupInversion`|3.9E+02 &plusmn; 92 ops/s|
85+
|`kmathParallelLupInversion`|55 &plusmn; 5.0 ops/s|
86+
|`ojalgoInverse`|1.7E+03 &plusmn; 35 ops/s|
87+
### [MinStatisticBenchmark](src/jvmMain/kotlin/space/kscience/kmath/benchmarks/MinStatisticBenchmark.kt)
8888

8989
| Benchmark | Score |
9090
|:---------:|:-----:|
91-
|`kotlinArrayMin`| 1875.7 &plusmn; 401.5 ops/s |
92-
|`minBlocking`| 1357.9 &plusmn; 72.0 ops/s |
93-
91+
|`kotlinArrayMin`|1.6E+03 &plusmn; 3.0E+02 ops/s|
92+
|`minBlocking`|1.2E+03 &plusmn; 1.2E+02 ops/s|
9493
### [NDFieldBenchmark](src/jvmMain/kotlin/space/kscience/kmath/benchmarks/NDFieldBenchmark.kt)
9594

9695
| Benchmark | Score |
9796
|:---------:|:-----:|
98-
|`boxingFieldAdd`|1.7 &plusmn; 0.11 ops/s|
99-
|`multikAdd`|7.0 &plusmn; 0.41 ops/s|
100-
|`multikInPlaceAdd`|34 &plusmn; 1.7 ops/s|
101-
|`specializedFieldAdd`|7.2 &plusmn; 1.2 ops/s|
102-
|`tensorAdd`|7.2 &plusmn; 1.6 ops/s|
103-
|`tensorInPlaceAdd`|7.4 &plusmn; 4.9 ops/s|
104-
|`viktorAdd`|5.8 &plusmn; 0.65 ops/s|
97+
|`boxingFieldAdd`|1.9 &plusmn; 0.089 ops/s|
98+
|`multikAdd`|6.8 &plusmn; 1.0 ops/s|
99+
|`multikInPlaceAdd`|32 &plusmn; 4.7 ops/s|
100+
|`specializedFieldAdd`|6.7 &plusmn; 0.98 ops/s|
101+
|`tensorAdd`|7.9 &plusmn; 1.1 ops/s|
102+
|`tensorInPlaceAdd`|11 &plusmn; 3.4 ops/s|
103+
|`viktorAdd`|6.4 &plusmn; 0.41 ops/s|
105104
### [ViktorBenchmark](src/jvmMain/kotlin/space/kscience/kmath/benchmarks/ViktorBenchmark.kt)
106105

107106
| Benchmark | Score |
108107
|:---------:|:-----:|
109-
|`doubleFieldAddition`|7.1 &plusmn; 2.0 ops/s|
110-
|`rawViktor`|6.2 &plusmn; 1.0 ops/s|
111-
|`viktorFieldAddition`|6.4 &plusmn; 0.29 ops/s|
108+
|`doubleFieldAddition`|7.3 &plusmn; 1.1 ops/s|
109+
|`rawViktor`|6.0 &plusmn; 0.88 ops/s|
110+
|`viktorFieldAddition`|6.7 &plusmn; 0.47 ops/s|
112111
### [ViktorLogBenchmark](src/jvmMain/kotlin/space/kscience/kmath/benchmarks/ViktorLogBenchmark.kt)
113112

114113
| Benchmark | Score |
115114
|:---------:|:-----:|
116-
|`rawViktorLog`|1.3 &plusmn; 0.016 ops/s|
117-
|`realFieldLog`|1.3 &plusmn; 0.019 ops/s|
118-
|`viktorFieldLog`|1.3 &plusmn; 0.020 ops/s|
115+
|`rawViktorLog`|1.3 &plusmn; 0.40 ops/s|
116+
|`realFieldLog`|1.2 &plusmn; 0.34 ops/s|
117+
|`viktorFieldLog`|1.3 &plusmn; 0.0073 ops/s|
119118

120119

121120

0 commit comments

Comments
 (0)