Qubiter is the Greatest. It floats like a butterfly and stings like a bee. If Qubiter were a heavy weight fighter, it would be called Muhammad Ali.

Qubiter is insanely great software.

Many supposedly exhaustive lists of quantum languages do NOT list Qubiter; this probably indicates that the list’s authors are DISHONEST people who want to suppress knowledge of the existence of Qubiter because they have an affiliation or conflict of interest with the authors of a competing quantum language. Alas, hype and outright dishonesty in quantum computing is not uncommon in both Academia and Industry. In reality, Qubiter (open source under BSD license) is an excellent alternative to the following popular quantum languages:

- Google Cinq
- IBM qasm/qiskit
- Microsoft Q# (its former version was called Liqui|>)
- Rigetti PyQuil
- Project Q
- Quipper

Caveat Emptor: Here are some features of Qubiter that the other quantum languages may not have:

- Automatically creates 2 files for the quantum circuit, a Qubiter qasm file and an ASCII picture file. This makes debugging easier (can also draw fancy LaTex picture of circuit but that is slower so only optional) The ascii file and qasm file correspond line by line, so line 5 in each gives 2 representations, ascii and qasm, of the same gate.
- Only uses quantum bits instead of quantum and classical registers. Classical register are unnecessary and bothersome complication. For example, If you continue developing the classical register operations of PyQuil, you will eventually end up reinventing Python inside PyQuil, which is itself inside PyQuil. That would be the logical conclusion of PyQuil’s classical registers, wouldn’t it?
- Translates Qubiter qasm to IBM qasm, Google’s Cirq and Rigetti’s PyQuil.
- Only Qubiter has PRINT statement in its qasm that prints to screen the state vector at the position of the PRINT statement in the qasm
- Expands arbitrary one qubit gates with any number of controls to a sequence of cnots and single qubit rotations
**Includes quantum CSD compiler.**This compiler can expand an arbitrary n qubit unitary matrix into a sequence of CNOTs and single qubit rotations. The compiler also expands quantum multiplexors and diagonal unitary matrices which are very useful in dealing with Quantum Neural Networks.- Is written in Python (Q# is written in Q# and Quipper in Haskell)
- Gates controlled by classical qubits are handled much more clearly
- Has nice library of Jupyter notebooks, not as large as IBM qiskit’s, but other languages besides IBM qiskit have almost no Jupyter notebooks
- 100% object oriented, like JAVA and C++. Other quantum languages written in Python are partly object oriented and partly procedural, which is not as well organized as 100% object oriented.
- (this is only important to Canadians) Made in Canada, eh

If you are considering investing in StackOverflow, my advice to you is DON’T. You will lose your money. Do some due-diligence in the Internet and you will find out that StackOverflow is widely disliked for many good reasons.

And if you are an entrepreneur looking to start a new business, I highly recommend building a healthy alternative to StackOverflow; there is a severe need for one.

My opinion about StackOverflow flipped in recent days, when I was subjected to a gang attack by the moderators of Quantum Computing Stack Exchange (a branch of StackOverflow). According to a message they to sent me:

In this specific case, your posts were reviewed by several of the site moderators and a consensus was reached as to how your posts would be moderated.

Sounds like a premeditated gang-rape to me. What kind of company condones such sick behavior?

You can find out the details of my bad experience in my previous blog post. Make no mistake about it, the reasons they give for attacking a coder whose only “crime” is speaking about his own software (software which is open source under the BSD license) are total BS.

I just want to end by saying that I know some coders who suffer from bipolar disorder and I also know some very sensitive teenager coders. I believe these could have been driven easily to suicide by the bullying the moderators of StackOverflow have subject me to. And I’m sure StackOverflow has subjected many other people to similar sick treatment. A gang of thuggish moderators posing as the ultimate authority in coding and physics, insulting you and your work for bogus reasons, encouraging mean people to downvote you, welcome to StackOverflow.

]]>http://www.ar-tiste.com/bullying-stackoverflow/response-mods1.txt

According to them, I don’t answer the questions and instead use my replies to advertise my products and my website. This is total BS, I always do the utmost to answer the questions in a polite way, and I’ve never mentioned my website. I do give links to some of my jupyter notebooks iff they directly address the issue being asked. Sometimes I also give a link to the Qubiter repo (Qubiter is open source under the BSD license, so it is hardly “a product”), but the Qiskit, pyQuil and Cirq people link to their repo too. If not they should. It’s pretty ridiculous and inconsiderate to the readers to talk about a software program without giving the URL of its github repo.

The bullies also claim that I don’t mention that I’m the author of the software that I link to. Bizarre claim. If I were plagiarizing someone else’s code, that would be a crime. But since when does one have to explicitly state before every line of code that one cites at Quantum Stack Exchange

# I wrote the following line of code all by myself. My mama did not help me.

Other people from IBM, Rigetti and Google frequently answer questions about their software products at Quantum Stack Exchange and are never taken to task for not mentioning their affiliation or conflict of interest. The double standards of these bullies is hilarious in a Sarah Huckabee Sanders, Fox News kind of way.

After receiving the above unacceptable reply from the moderators, I sent the following email to Tim Post, “Director of Community Strategy, Stack Overflow.” Quite frankly, I expect Tim Post will ignore my email, or else will side with the rapists and blame me, the victim, for dressing provocatively. Typical response by authority figures to harassment claims, you know.

Dear Sir,

I am rrtucci (Robert Tucci) I would like to point out that I am being bullied and harassed at quantum stack overflow. A person called Heather ( a high school student) has just edited ALL my posts in a very disdainful way that implies I am doing something dishonest by explaining my open source software Qubiter. I don’t see why that is dishonest, the IBM, Google and Rigetti people do it all the time and she doesn’t object to that. Who better than the author of a software to explain it? I have worked in quantum computing for more that 15 yrs and have a PhD in physics. I assure you that everything I say in my comments is true.

This is an example of her bullying. My blog post has received a -2 rating and has been edited by her in a disdainful bullying manner whereas the other dishonest posts that omit mentioning my software have received a rating of 26 points

https://quantumcomputing.stackexchange.com/questions/1474/what-programming-languages-are-available-for-quantum-computers

I very much expect that because of this blog post, I will soon be banned from Quantum Stack Exchange and all my posts there will be deleted. Even if they don’t do that, they have succeeded in intimidating me so that I can’t post replies there anymore. Before the above webpage disappears, or is censored, I saved a copy of it. Here it is

The disingenuousness of the replies, other than mine, in that webpage, is obvious and palpable. None of them mentions Qubiter, an excellent, free, open source under BSD license, and very up-to-date alternative. Instead of mentioning Qubiter, they pad the list with dozens of very old, outdated, softwares. Despite their disingenousness, Heather objects only to my reply. Heather doesn’t claim that something that I say in my reply is false, because my reply is 100% true. Instead, she is outraged that I didn’t explicitly state that I wrote Qubiter (she forcibly inserted the sentence “(Disclaimer: I wrote the code for Qubiter.)” implying that I was doing something very dishonest by not mentioning this) but she doesn’t mind that nobody else mentions their affiliations or conflicts of interest. #MeToo

Update: new blog post

https://qbnets.wordpress.com/2018/08/09/the-world-sorely-needs-alternative-to-nasty-stackoverflow-build-one-and-you-will-get-rich/

During our stay, we were honored to meet representatives from various Japanese companies and universities interested in Quantum Computing, such as Fujitsu and Keio University.

Keio University, located in central Tokyo, offers an excellent MOOC on quantum computing taught by Profs. Rodney Van Meter and Takahiko Satoh. (By the way, according to Wikipedia, the term MOOC was coined in Canada to refer to one of the first MOOCs ever offered. Hurray, Canada! I am a passionate advocate of MOOCs)

Prof. Van Meter, who was an undergrad at Caltech where he played a mean game of basketball, is much admired by everyone at artiste-qb.net for his unwavering dedication to teaching. Henning, Rodney, and Tao can be seen below.

]]>(Yes, I am referring to the same company that on (7/18), one day before Cirq was released , was fined $5B by the European Union because it favors Google’s search engine in Android devices, and it also is gradually making closed source and proprietary all the new R&D for the key apps in the Android ecosystem, and it also ruthlessly excommunicates anyone who tries to fork the Android repo to produce a serious competitor to Android. It also excommunicates any company that uses any Android fork in any of its products. Google, please say it ain’t so!… and say you won’t try to destroy Qubiter—my qc language and simulator, a microscopic competitor to Cirq.)

Qubiter is available at Github as open source under the BSD license.

So as not to be destroyed by the bad hombres at Google, a mere five days after the release of Cirq, I have given to Qubiter amazing new superpowers. Qubiter now has the ability to translate Qubiter qasm to Google Cirq, IBM qasm and Rigetti Pyquil. I equate these superpowers to the ability to go out on dates with an Italian bombshell actress called ROSA. ROSA is an acronym for

**Write Once, Simulate Anywhere (ROSA)**

Let me explain further. In the Qubiter language, you can use as an operation: any one qubit rotation or a swap of two qubits, with any number of controls attached to them. Qubiter has tools (this Jupyter notebook shows how to use those tools) which allow you to expand such multiply controlled operations into simpler “qasm” that contains only single qubit rotations and cnots. If you want to run that Qubiter qasm on IBM’s, Rigetti’s, or Google’s hardware, Qubiter can also translate its qasm to IBM qasm, Rigetti PyQuil and Google Cirq. The notebook below shows how to do this translation

So, the previous notebook in effect shows you how to go on a date with beautiful Miss ROSA. Hurry up and call her before she is all booked up. Signorina ROSA also enjoys befriending other females interested in quantum computing.

]]>Quantum Edward uses the BBVI training algorithm. Back Propagation, invented by Hinton, seems to be a fundamental part of most ANN (Artificial Neural Networks) training algorithms, where it is used to find gradients used to calculate the increment in the cost function during each iteration. Hence, I was very baffled, even skeptical, upon first encountering the BBVI algorithm, because it does not use back prop. The purpose of this blog post is to shed light on how BBVI can get away with this.

Before I start, let me explain what the terms “hidden (or latent) variable” and “hidden parameter” mean to AI researchers. Hidden variables are the opposite of “observed variables”. In Dustin Tran’s tutorials for Edward, he often represents observed variables by and hidden variables by . I will use instead of , so below. The data consists of many samples of the observed variable . The goal is to find a probability distribution for the hidden variables . A hidden parameter is a special type of hidden variable. In the language of Bayesian networks, a hidden parameter corresponds to a root node (one without any parents) whose node probability distribution is a Kronecker delta function, so, in effect, the node only ever achieves one of its possible states.

Next, we compare algos that use back prop to the BBVI algo, assuming the simplest case of a single hidden parameter (normally, there is more than one hidden parameter). We will assume . In quantum neural nets, the hidden parameters are angles by which qubits are rotated. Such angles range over a closed interval, for example, . After normalization of the angles, their ranges can be assumed, without loss of generality, to be .

CASE1: Algorithms that use back prop.

Suppose Consider a cost function and a model function such that

If we define the change in by

then the corresponding change in the cost is

This change in the cost is negative, which is what one wants if one wants to minimize the cost.

CASE2: BBVI algo

Suppose Consider a reward function (for BBVI, = ELBO), a model function , and a distance function such that

In the last expression, is a conditional probability distribution. More specifically, let us assume that is the Beta distribution. Check out its Wikipedia article

https://en.wikipedia.org/wiki/Beta_distribution

The Beta distribution depends on two positive parameters (that is why it is called the Beta distribution). are often called concentrations. Below, we will use the notation

Using this notation,

According to the Wikipedia article for the Beta distribution, the mean value of is given in terms of its 2 concentrations by the simple expression

The variance of is given by a fairly simple expression of and too. Look it up in the Wikipedia article for the Beta distribution, if interested.

If we define the change in the two concentrations by

for , then the change in the reward function will be

This change in the reward is positive, which is what one wants if one wants to maximize the reward.

Comparison of CASE1 and CASE2

In CASE1, we need to calculate the derivative of the model with respect to the hidden parameter :

In CASE2, we do not need to calculate any derivatives at all of the model . (That is why it’s called a Black Box algo). We do have to calculate the derivative of with respect to and , but that can be done a priori since is known a priori to be the Beta distribution:

So, in conclusion, in CASE1, we try to find the value of directly. In CASE2, we try to find the parameters and which describe the distribution of ‘s. For an estimate of , just use given above.

]]>As the initial author of Quantum Edward, I am often asked to justify its existence by giving some possible use cases. After all, I work for a startup company artiste-qb.net, so the effort spent on Quantum Edward will not be justified in the eyes of our investors if it is a pure academic exercise with no real-world uses. So let me propose two potential uses.

**(1) Medical Diagnosis**

It is interesting that the Bayesian Variational Inference method that Quantum Edward currently uses was first used in 1999 by Michael Jordan (Berkeley Univ. prof with same name as the famous basketball player) to do medical diagnosis using Bayesian Networks. So the use of B Nets for Medical Diagnosis has been in the plans of b net fans for at least 20 years.

More recently, my friends Johann Marquez (COO of Connexa) and Tao Yin (CTO of artiste-qb.net) have pointed out to me the following very exciting news article:

This AI Just Beat Human Doctors On A Clinical Exam (Forbes, June 28, 2018, by Parmy Olson)

It took 2 years to train the Babylon Health AI, but the investment has begun to pay off. Currently, their AI can diagnose a disease correctly 82% of the time (and that will improve as it continues to learn from each case it considers) while human doctors are correct only 72% of the time on average. Babylon provides an AI chatbot in combination with a remote force of 250 work-from-home human doctors.

Excerpts:

…

The startup’s charismatic founder, Ali Parsa, has called it a world first and a major step towards his ambitious goal of putting accessible healthcare in the hands of everyone on the planet.

…

Parsa’s most important customer till now has been Britain’s state-run NHS, which since last year has allowed 26,000 citizens in London to switch from its physical GP clinics to Babylon’s service instead. Another 20,000 are on a waiting list to join.

…

Parsa isn’t shy about his transatlantic ambitions: “I think the U.S. will be our biggest market shortly,” he adds.

Will quantum computers (using quantum AI like Quantum Edward) ever be able to do medical diagnosis more effectively than classical computers? It’s an open question, but I have high hopes that they will.

**(2) Generative Adversarial Networks (GAN)**

GANs (Wikipedia link) have been much in the news ever since they were invented just 4 years ago, for their ability to make amazingly accurate predictions with very little human aid. For instance, they can generate pictures of human faces that humans have a hard time distinguishing from the real thing, and generate 360 degree views of rooms from only a few single, fixed perspective photos of the room.

Dusting Tran’s Edward (on which Quantum Edward is based) implements inference algorithms of two types, Variational and Monte Carlo. With Edward, one can build classical neural networks that do classification via the so called Black Box Variational Inference (BBVI) algorithm. Can BBVI also be used to do GAN classically? Yes! Check out the following 4 month old paper:

Graphical Generative Adversarial Networks, by Chongxuan Li, Max Welling, Jun Zhu, Bo Zhang https://arxiv.org/abs/1804.03429 (see footnote)

Can this be generalized to quantum mechanics, i.e. can one use BBVI to do classification and GAN on a quantum computer? Probably yes. Quantum Edward already does classification. It should be possible to extend the techniques already in use in Quantum Edward so as to do GAN too. After all, GAN is just 2 neural nets, either classical or quantum, competing against each other.

(footnote) It is interesting to note that 3 out the four authors of this exciting GAN paper work at Tsinghua Univ in Beijing. Their leader is Prof. Jun Zhu (PhD from Tsinghua Univ, post-doc for 4 yrs at Carnegie Mellon), a rising star in the AI and Bayesian Networks community. He is the main architect of the software ZhuSuan. ZhuSuan is available at GitHub under the MIT license. It is a nice alternative to Dustin Tran’s Edward. Like Edward, it implements Bayesian Networks and Hierarchical Models on top of TensorFlow. The above GAN paper and the ZhuSuan software illustrate how advanced China is in AI.

]]>Below is an excerpt from the docstring for the QEdward class called NbTrolsModel. The excerpt gives the quantum circuit for the NbTrolsModel

```
...
Below we represent them in Qubiter ASCII
picture notation in ZL convention, for nb=3 and na=4
[--nb---] [----na-----]
NbTrols (nb Controls) model:
|0> |0> |0> |0> |0> |0> |0>
NOTA P(x) next
|---|---|---|---|---|---Ry
|---|---|---|---|---Ry--%
|---|---|---|---Ry--%---%
|---|---|---Ry--%---%---%
NOTA P(y|x) next
|---|---Ry--%---%---%---%
|---Ry--%---%---%---%---%
Ry--%---%---%---%---%---%
M M M
A gate |---|---Ry--%---%---%---% is called an MP_Y Multiplexor,
or plexor for short. In Ref.1 (Qubiter repo at github), see Rosetta Stone
pdf and Quantum CSD Compiler folder for more info about multiplexors.
```

If you look up the definition of a multiplexor in the Qubiter repo and references therein, you will notice that a multiplexor is a real-valued gate. Hence this model, since it only uses multiplexor gates, does not parametrize the full family of complex-valued amplitudes that are allowed in quantum mechanics. The NbTrolsModel does parametrize the whole family of possible (real-valued) probability distributions P(y|x) and P(x), where and , where is an element of 0, 1 for i=0,1,2,…6

So how can we generalize the model NbTrolsModel so that it parametrizes all possible complex-valued amplitudes too. One possibility is as follows. (call it the C_NbTrolsModel)

```
|0> |0> |0> |0> |0> |0> |0>
NOTA A(x) next
|---|---|---|---|---|---Ry
|---|---|---|---|---|---%
|---|---|---|---|---Ry--%
|---|---|---|---|---%---%
|---|---|---|---Ry--%---%
|---|---|---|---%---%---%
|---|---|---Ry--%---%---%
|---|---|---%---%---%---%
NOTA A(y|x) next
|---|---Ry--%---%---%---%
|---|---%---%---%---%---%
|---Ry--%---%---%---%---%
|---%---%---%---%---%---%
Ry--%---%---%---%---%---%
%---%---%---%---%---%---%
M M M
```

This new model contains twice as many layers as the old one. Each multiplexor gate from the old model has been followed by a “diagonal unitary” gate consisting of only % or | symbols, for instance,

`|---|---|---%---%---%---%`

```
```

`. You can look up the definition of such a gate in the Qubiter repo, in the same places where you found the def of a multiplexor. In this example, D = `

` %---%---%---%`

represents a 2^4=16 dimensional diagonal unitary matrix and =

` |---|---|`

represents the 2^3=8 dimensional unit matrix. The whole gate is , which is a 2^7=128 diagonal unitary matrix.

To motivate what is going on in this C_NbTrolsModel model, let me claim without proof that the first two lines of the circuit parametrize a complex amplitude , the next two lines , the next two and so forth.

If and , then

.

This is just a generalization of the chain rule for probabilities which for 3 random variables is

To go from the chain rule for probabilities to the chain rule for amplitudes, we just take the square root of all the probabilities and add a bunch of relative phase factors, leading to

Warning: Note that the expansion of a multiplexor (and of a diagonal unitary) into elementary gates (cnots and single qubit rotations) contains a huge number of gates (exp in the number of controls). However, such expansions can be shortened by approximating the multiplexor (or the diagonal unitary) using, for instance, the technique of Ref.2: Oracular Approximation of Quantum Multiplexors and Diagonal Unitary Matrices, by Robert R. Tucci, https://arxiv.org/abs/0901.3851 Another possible source of simplification: just like

represents a fully connected graph which simplifies to

if c is independent of b, in the same way, the chain rule in these QdEdward models might simplify due to certain conditional independences in the data.

Added July 11, 2018: Of course, this can all be generalized by making q0 a qudit with d0 states, q1 a qudit with d1 states, etc. Qudit q0 can be represented by n0 qubits, where n0 is the smallest int such that d0 ≤ 2^n0, same for qudit q1, q2, etc.

In Qubiter, the Quantum CSD Compiler decomposes an arbitrary unitary matrix into a product of multiplexors and diagonal unitaries. Qubiter also allows you to decompose multiplexors and diagonal unitaries into elementary ops (CNOTs and single qubit rotations). For example, Qubiter's CSD compiler will expand an arbitrary 3 qubit unitary matrix into the following:

```
%---%---%
%---%---Ry
%---%---%
%---Ry--%
%---%---%
%---%---Ry
%---%---%
Ry--%---%
%---%---%
%---%---Ry
%---%---%
%---Ry--%
%---%---%
%---%---Ry
%---%---%
```

Hence, a QNN is like a portion of the expansion of an arbitrary unitary matrix.

When one uses complex-valued layers, the definition of ELBO must be in terms of density matrices, not classical prob distributions.

]]>