Skip to content

Commit

Permalink
Demangle JS names 🪢
Browse files Browse the repository at this point in the history
  • Loading branch information
TheNewJavaman committed Dec 6, 2021
1 parent 5ba0f7f commit f3e5bae
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 19 deletions.
Original file line number Diff line number Diff line change
@@ -1,26 +1,29 @@
package net.javaman.brackt.api.math

import kotlin.js.JsName

/**
* A number composed of real and imaginary parts
*/
data class ComplexNumber(
val real: Double = 0.0,
val imaginary: Double = 0.0
) {
operator fun plus(that: net.javaman.brackt.api.math.ComplexNumber) =
net.javaman.brackt.api.math.ComplexNumber(real + that.real, imaginary + that.imaginary)
operator fun plus(that: ComplexNumber) =
ComplexNumber(real + that.real, imaginary + that.imaginary)

operator fun minus(that: net.javaman.brackt.api.math.ComplexNumber) =
net.javaman.brackt.api.math.ComplexNumber(real - that.real, imaginary - that.imaginary)
operator fun minus(that: ComplexNumber) =
ComplexNumber(real - that.real, imaginary - that.imaginary)

operator fun times(that: net.javaman.brackt.api.math.ComplexNumber) = net.javaman.brackt.api.math.ComplexNumber(
operator fun times(that: ComplexNumber) = ComplexNumber(
real * that.real - imaginary * that.imaginary,
real * that.imaginary + that.real * imaginary
)

operator fun times(that: net.javaman.brackt.api.math.Matrix2D) = net.javaman.brackt.api.math.Matrix2D(
@JsName("timesMatrix")
operator fun times(that: Matrix2D) = Matrix2D(
that.size,
that.points.map { net.javaman.brackt.api.math.Matrix2DEntry(it.position, this * it.value) }.toMutableSet()
that.points.map { Matrix2DEntry(it.position, this * it.value) }.toMutableSet()
)

override fun toString() = "$real+${imaginary}i"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,26 @@ data class Qubit(
)

data class QubitState(
val zeroAmpl: net.javaman.brackt.api.math.ComplexNumber,
val oneAmpl: net.javaman.brackt.api.math.ComplexNumber
val zeroAmpl: ComplexNumber,
val oneAmpl: ComplexNumber
) {
companion object {
@JvmStatic
val ZERO = QubitState(
net.javaman.brackt.api.math.ComplexNumber(1.0, 0.0),
net.javaman.brackt.api.math.ComplexNumber(0.0, 0.0)
ComplexNumber(1.0, 0.0),
ComplexNumber(0.0, 0.0)
)

@JvmStatic
val ONE = QubitState(
net.javaman.brackt.api.math.ComplexNumber(0.0, 0.0),
net.javaman.brackt.api.math.ComplexNumber(1.0, 0.0)
ComplexNumber(0.0, 0.0),
ComplexNumber(1.0, 0.0)
)

@JvmStatic
val HADAMARD = QubitState(
net.javaman.brackt.api.math.ComplexNumber(sqrt(2.0) / 2.0, 0.0),
net.javaman.brackt.api.math.ComplexNumber(sqrt(2.0) / 2.0, 0.0)
ComplexNumber(sqrt(2.0) / 2.0, 0.0),
ComplexNumber(sqrt(2.0) / 2.0, 0.0)
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import net.javaman.brackt.providers.ibmq.api.models.RunExperimentResponse
import net.javaman.brackt.providers.ibmq.api.models.VersionsRequest
import net.javaman.brackt.providers.ibmq.api.models.VersionsResponse
import net.javaman.brackt.providers.ibmq.transpiler.toQasm
import kotlin.js.JsName
import kotlin.jvm.JvmStatic
import kotlin.time.Duration
import kotlin.time.Duration.Companion.minutes
Expand Down Expand Up @@ -109,6 +110,7 @@ class IbmqProvider {
/**
* Select a network manually using a lambda
*/
@JsName("selectNetworkWithPicker")
suspend fun selectNetwork(picker: IbmqProvider.(NetworksResponse) -> Unit) {
val response = ibmqApi.networks(accessToken)
picker(this, response)
Expand Down Expand Up @@ -141,6 +143,7 @@ class IbmqProvider {
/**
* Select a device using a custom lambda
*/
@JsName("selectDeviceWithPicker")
suspend fun selectDevice(picker: IbmqProvider.(BackendsResponse) -> Unit) {
val response = ibmqApi.backends(accessToken)
picker(this, response)
Expand All @@ -160,6 +163,7 @@ class IbmqProvider {
/**
* Run an experiment on a device
*/
@JsName("runExperimentWithRequest")
suspend fun runExperiment(request: RunExperimentRequest): RunExperimentResponse {
val response = ibmqApi.runExperiment(
accessToken,
Expand Down Expand Up @@ -277,6 +281,7 @@ class IbmqProvider {
* Run an experiment and wait for the job to complete
*/
@OptIn(ExperimentalTime::class)
@JsName("runExperimentAndWaitWithRequest")
suspend fun runExperimentAndWait(
request: RunExperimentRequest,
timeoutDuration: Duration = JOB_TIMEOUT_DURATION
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,3 @@ fun QuantumCircuit.toQasm(): String = (listOf(
else -> throw UnsupportedOperationException("Unsupported gate (${it::class.simpleName})")
}
}).joinToString(";") + ";"

fun QuantumMacro.toQasm(qubitMap: QubitMap) = QuantumCircuit(numQubits = numQubits) {
runMacro { onQubits(qubitMap) }
}.toQasm()

0 comments on commit f3e5bae

Please sign in to comment.