Sha256: 1673c74a941d5ba9ee48f3dcea6150dfa6e876402f575fc453a6f4b0ad2b1187

Contents?: true

Size: 1014 Bytes

Versions: 188

Compression:

Stored size: 1014 Bytes

Contents

data class ComplexNumber(val real: Double = 0.0, val imag: Double = 0.0) {

    val abs = Math.hypot(real, imag)

    operator fun plus(other: ComplexNumber)
            = copy(real = real + other.real, imag = imag + other.imag)

    operator fun minus(other: ComplexNumber)
            = copy(real = real - other.real, imag = imag - other.imag)

    operator fun times(other: ComplexNumber)
            = copy(real = real*other.real - imag*other.imag, imag = real*other.imag + imag*other.real)

    operator fun div(other: ComplexNumber)
            = this * other.conjugate() / Math.pow(other.abs, 2.0)

    operator fun times(factor: Double)
            = copy(real = factor * real, imag = factor * imag)

    operator fun div(factor: Double)
            = copy(real = real / factor, imag = imag / factor)

    fun conjugate() = copy(imag = -1 * imag)

}

fun exponential(exponent: ComplexNumber)
        = ComplexNumber(real = Math.cos(exponent.imag), imag = Math.sin(exponent.imag)) * Math.exp(exponent.real)

Version data entries

188 entries across 188 versions & 1 rubygems

Version Path
trackler-2.2.1.119 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.118 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.117 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.116 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.115 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.114 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.113 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.111 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.110 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.109 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.108 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.107 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.106 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.105 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.104 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.103 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.102 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.101 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.100 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt
trackler-2.2.1.99 tracks/kotlin/exercises/complex-numbers/.meta/src/reference/kotlin/ComplexNumber.kt