Math Extensions

Koltin extensions for matrix and vector algebra, random number generation, and arithmetic on boolean arrays.

Лицензия

Лицензия

Группа

Группа

com.tecacet
Идентификатор

Идентификатор

math-extensions
Последняя версия

Последняя версия

1.0.4
Дата

Дата

Тип

Тип

jar
Описание

Описание

Math Extensions
Koltin extensions for matrix and vector algebra, random number generation, and arithmetic on boolean arrays.
Ссылка на сайт

Ссылка на сайт

https://github.com/algorythmist/math-extensions
Организация-разработчик

Организация-разработчик

TecAceT
Система контроля версий

Система контроля версий

https://github.com/algorythmist/math-extensions

Скачать math-extensions

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/com.tecacet/math-extensions/ -->
<dependency>
    <groupId>com.tecacet</groupId>
    <artifactId>math-extensions</artifactId>
    <version>1.0.4</version>
</dependency>
// https://jarcasting.com/artifacts/com.tecacet/math-extensions/
implementation 'com.tecacet:math-extensions:1.0.4'
// https://jarcasting.com/artifacts/com.tecacet/math-extensions/
implementation ("com.tecacet:math-extensions:1.0.4")
'com.tecacet:math-extensions:jar:1.0.4'
<dependency org="com.tecacet" name="math-extensions" rev="1.0.4">
  <artifact name="math-extensions" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.tecacet', module='math-extensions', version='1.0.4')
)
libraryDependencies += "com.tecacet" % "math-extensions" % "1.0.4"
[com.tecacet/math-extensions "1.0.4"]

Зависимости

compile (1)

Идентификатор библиотеки Тип Версия
org.jetbrains.kotlin : kotlin-stdlib jar 1.4.20

test (2)

Идентификатор библиотеки Тип Версия
org.junit.jupiter : junit-jupiter-api jar 5.7.0
org.junit.jupiter : junit-jupiter-engine jar 5.7.0

Модули Проекта

Данный проект не имеет модулей.

math-extensions

Koltin extensions for matrix and vector algebra, random number generation, and arithmetic on boolean arrays.

Examples:

Vector Arithmetic:

    val v1 = doubleArrayOf(-1.0, 2.0, 3.0)
    val v2 = doubleArrayOf(1.0, -1.0, 2.5)
    val v3 = doubleArrayOf(2.0, -2.0, -2.0)

    val y = 3.5*v1 - v2*5 - v3/2
    println(Arrays.toString(y))
    assertArrayEquals(doubleArrayOf(-9.5, 13.0, -1.0), y)

Inner Product and norm

    val v = doubleArrayOf(1.0, -1.0, 1.0)
    val w = doubleArrayOf(1.0, 2.0, 2.0)
    assertEquals(1.0, v*w, 0.001)
    
    assertEquals(sqrt(3.0), v.norm(),0.001)
    assertEquals(3.0, v.normSquared(),0.001)

Matrix Arithmetic

    val m1 = arrayOf(doubleArrayOf(1.0, 2.0),
            doubleArrayOf(-2.0, 1.0),
            doubleArrayOf(-1.0, -2.0))
    val m2 = arrayOf(doubleArrayOf(2.0, 1.0),
            doubleArrayOf(2.0, -1.0),
            doubleArrayOf(0.0, 1.0))

     val m = 2*m1/5.0 - 5.0*m2/2
        assertEquals(
                "[-4.6, -1.7]\n" +
                "[-5.8, 2.9]\n" +
                "[-0.4, -3.3]", toString(m))

Matrix Multiplication

    var w = zeros(3)
    val g = arrayOf(doubleArrayOf(1.0, 2.0, 1.0),
            doubleArrayOf(-2.0, 1.0, 2.0),
            doubleArrayOf(0.0, -1.0, -1.0))
     val h = ones(3)

     w -= g*h
     assertArrayEquals(doubleArrayOf(-4.0, -1.0, 2.0), w)

     val v = h*g
     assertArrayEquals(doubleArrayOf(-1.0, 2.0, 2.0), v)
     
     val m = arrayOf(doubleArrayOf(1.0, 2.0),
                 doubleArrayOf(-2.0, 1.0),
                 doubleArrayOf(-1.0, -2.0))
     assertEquals(
                 "[5.0, 0.0, -5.0]\n" +
                     "[0.0, 5.0, 0.0]\n" +
                     "[-5.0, 0.0, 5.0]",
                 toString(m*m.transpose()))
     assertEquals(
                 "[6.0, 2.0]\n" +
                         "[2.0, 9.0]",
                 toString(m.transpose()*m))

Boolean Arrays

val b1 = booleanArrayOf(false, true, true, false, true)
val b2 = booleanArrayOf(true, true, true, true, false)

assertArrayEquals(booleanArrayOf(true, false, false, true, false),
            !b1)

assertArrayEquals(booleanArrayOf(false, true, true, false, false),
            b1 and b2)

assertArrayEquals(booleanArrayOf(true, true, true, true, true),
            b1 or b2)

assertArrayEquals(booleanArrayOf(true, false, false, true, true),
            b1 xor b2)

Random Number Generation

val random = Random(178)
val count = random.nextBinomial(10, 0.5)
val u = random.nextUniform(-2.0, -1.0)
val g = random.nextGaussian(10.0, 0.1)
val e = random.nextExponential(2.0)

Версии библиотеки

Версия
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0