v0.2.0 #206

Merged
altavir merged 210 commits from dev into master 2021-02-21 16:33:25 +03:00
6 changed files with 36 additions and 31 deletions
Showing only changes of commit b06f96c335 - Show all commits

View File

@ -46,8 +46,8 @@ private val PI_DIV_2 = Complex(PI / 2, 0)
* A field of [Complex]. * A field of [Complex].
*/ */
public object ComplexField : ExtendedField<Complex>, Norm<Complex, Complex>, RingWithNumbers<Complex> { public object ComplexField : ExtendedField<Complex>, Norm<Complex, Complex>, RingWithNumbers<Complex> {
public override val zero: Complex by lazy { 0.0.toComplex() } public override val zero: Complex = 0.0.toComplex()
public override val one: Complex by lazy { 1.0.toComplex() } public override val one: Complex = 1.0.toComplex()
/** /**
* The imaginary unit. * The imaginary unit.

View File

@ -36,23 +36,23 @@ public val Quaternion.r: Double
*/ */
public object QuaternionField : Field<Quaternion>, Norm<Quaternion, Quaternion>, PowerOperations<Quaternion>, public object QuaternionField : Field<Quaternion>, Norm<Quaternion, Quaternion>, PowerOperations<Quaternion>,
ExponentialOperations<Quaternion>, RingWithNumbers<Quaternion> { ExponentialOperations<Quaternion>, RingWithNumbers<Quaternion> {
override val zero: Quaternion by lazy { 0.toQuaternion() } override val zero: Quaternion = 0.toQuaternion()
override val one: Quaternion by lazy { 1.toQuaternion() } override val one: Quaternion = 1.toQuaternion()
/** /**
* The `i` quaternion unit. * The `i` quaternion unit.
*/ */
public val i: Quaternion by lazy { Quaternion(0, 1) } public val i: Quaternion = Quaternion(0, 1)
/** /**
* The `j` quaternion unit. * The `j` quaternion unit.
*/ */
public val j: Quaternion by lazy { Quaternion(0, 0, 1) } public val j: Quaternion = Quaternion(0, 0, 1)
/** /**
* The `k` quaternion unit. * The `k` quaternion unit.
*/ */
public val k: Quaternion by lazy { Quaternion(0, 0, 0, 1) } public val k: Quaternion = Quaternion(0, 0, 0, 1)
public override fun add(a: Quaternion, b: Quaternion): Quaternion = public override fun add(a: Quaternion, b: Quaternion): Quaternion =
Quaternion(a.w + b.w, a.x + b.x, a.y + b.y, a.z + b.z) Quaternion(a.w + b.w, a.x + b.x, a.y + b.y, a.z + b.z)

View File

@ -1,7 +1,6 @@
package kscience.kmath.structures package kscience.kmath.complex
import kscience.kmath.complex.Complex import kscience.kmath.structures.Buffer
import kscience.kmath.complex.complex
import kotlin.test.Test import kotlin.test.Test
import kotlin.test.assertEquals import kotlin.test.assertEquals

View File

@ -0,0 +1,26 @@
package kscience.kmath.complex
import kscience.kmath.expressions.FunctionalExpressionField
import kscience.kmath.expressions.bind
import kscience.kmath.expressions.invoke
import kscience.kmath.expressions.symbol
import kscience.kmath.operations.invoke
import kotlin.test.Test
import kotlin.test.assertEquals
internal class ExpressionFieldForComplexTest {
val x by symbol
@Test
fun testComplex() {
val context = FunctionalExpressionField(ComplexField)
val expression = context {
val x = bind(x)
x * x + 2 * x + one
}
assertEquals(expression(x to Complex(1.0, 0.0)), Complex(4.0, 0.0))
//assertEquals(expression(), Complex(9.0, 0.0))
}
}

View File

@ -11,12 +11,6 @@ kotlin.sourceSets {
api(project(":kmath-memory")) api(project(":kmath-memory"))
} }
} }
commonTest {
dependencies {
api(project(":kmath-complex"))
}
}
} }
readme { readme {

View File

@ -1,7 +1,6 @@
package kscience.kmath.expressions package kscience.kmath.expressions
import kscience.kmath.operations.RealField import kscience.kmath.operations.RealField
import kscience.kmath.complex.*
import kscience.kmath.operations.invoke import kscience.kmath.operations.invoke
import kotlin.test.Test import kotlin.test.Test
import kotlin.test.assertEquals import kotlin.test.assertEquals
@ -23,19 +22,6 @@ class ExpressionFieldTest {
assertFails { expression() } assertFails { expression() }
} }
@Test
fun testComplex() {
val context = FunctionalExpressionField(ComplexField)
val expression = context {
val x = bind(x)
x * x + 2 * x + one
}
assertEquals(expression(x to Complex(1.0, 0.0)), Complex(4.0, 0.0))
//assertEquals(expression(), Complex(9.0, 0.0))
}
@Test @Test
fun separateContext() { fun separateContext() {
fun <T> FunctionalExpressionField<T, *>.expression(): Expression<T> { fun <T> FunctionalExpressionField<T, *>.expression(): Expression<T> {