# Eigen: the odd duck?

**URL:** <https://discourse.julialang.org/t/eigen-the-odd-duck/14451>\
**Category:** Internals & Design\
**Tags:** linearalgebra\
**Created:** [September 2, 2018, 9:29pm UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451 "2018-09-02T21:29:48Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![juthohaegeman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juthohaegeman/32/8620_2.png) [@juthohaegeman](https://discourse.julialang.org/u/juthohaegeman)\
**Post date:** [September 2, 2018, 9:29pm UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/1 "2018-09-02T21:29:48Z")

</div>

I reiterate a question from [PR27212](https://github.com/JuliaLang/julia/pull/27212) in the hope it has some more visibility here.

I very much like the new interface of the matrix factorizations (or was it decompositions? 🙂) in julia 0.7/1.0 and all the work that has been done here. Congrats to everbody involved.

I do have one question. I tried to look for a discussion about the name change `eig` to `eigen` . Why was this decided or deemed necessary? `svd` is also a three letter word so that can be it. I like the name changes from `chol` to `cholesky` and the full name `hessenberg` , but `eig` seems so standard. It’s also used by Matlab and Numpy. In fact, if it were not for `eigen` , the names would be identical to Numpy/Scipy: `numpy.linalg.eig` , `numpy.linalg.svd` , `numpy.linalg.cholesky` , `scipy.linalg.hessenberg` , `scipy.linalg.schur`.

It’s very subjective, but I personally don’t like the name `eigen` very much. Maybe it’s also because in Dutch (and maybe also German, cause that’s where the prefix “eigen-” originates from), eigen is a stand alone word (which in itself has nothing to do with eigenvalues).

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [September 2, 2018, 9:42pm UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/2 "2018-09-02T21:42:08Z")

</div>

[https://github.com/JuliaLang/julia/pull/27212](https://github.com/JuliaLang/julia/pull/27212)

---

<div class="post-metadata">

**Author:** ![juthohaegeman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juthohaegeman/32/8620_2.png) [@juthohaegeman](https://discourse.julialang.org/u/juthohaegeman)\
**Post date:** [September 2, 2018, 9:49pm UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/3 "2018-09-02T21:49:34Z")

</div>

Yes, that is where I posted the question first. And I also added the link in my discourse post. But I don’t see any discussion surrounding the specific case of `eig->eigen`.

---

<div class="post-metadata">

**Author:** ![kslimes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kslimes/32/44413_2.png) [@kslimes](https://discourse.julialang.org/u/kslimes)\
**Post date:** [September 2, 2018, 9:51pm UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/4 "2018-09-02T21:51:12Z")

</div>

Although I don’t have a strong opinion about the naming change, I have to say the factorization improvements in general and this question in particular gave me flashbacks to a classic children’s tale:

 ![](https://global.discourse-cdn.com/julialang/original/3X/f/0/f0942302ed6b206b304665c736fb2f0c065576f7.jpeg)

Maybe if you like ducks more than swans, the old name is better, though 😉

---

<div class="post-metadata">

**Author:** ![juthohaegeman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juthohaegeman/32/8620_2.png) [@juthohaegeman](https://discourse.julialang.org/u/juthohaegeman)\
**Post date:** [September 2, 2018, 9:59pm UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/5 "2018-09-02T21:59:36Z")

</div>

🙂 I just read the tale (though not this seemingly very nice edition) to my 2.5 year old daughter the other day.

---

<div class="post-metadata">

**Author:** ![jandehaan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jandehaan/32/6805_2.png) [@jandehaan](https://discourse.julialang.org/u/jandehaan)\
**Post date:** [September 2, 2018, 10:04pm UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/6 "2018-09-02T22:04:57Z")

</div>

> [@juthohaegeman](#):
>
> eigen is a stand alone word (which in itself has nothing to do with eigenvalues

The Dutch (and German) word ‘eigen’ may be used as an adjective in which case it means ‘typical’, ‘characteristic’, or ‘individual’. Both the Dutch word ‘waarde’ and the German word ‘wert’ translate to ‘value’ . In 1904 the German mathematician David Hilbert coined the word `Eigenwert’ (‘eigenwaarde’ in Dutch) which means ‘characteristic value’. Think of the word ‘eigenvalue’ as a partial translation. In this context ‘eigen’ simply means ‘characteristic’.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [September 3, 2018, 6:25am UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/7 "2018-09-03T06:25:47Z")

</div>

> [@juthohaegeman](#):
>
> But I don’t see any discussion surrounding the specific case of `eig->eigen` .

I am under the impression that everything (except `svd`) got long names (`chol` → `cholesky`, `bkfact` to `bunchkaufman`, etc), so indeed `eig` was not specially treated. Why should it be?

Personally, I like the long names. And I don’t see why having identical names with Numpy/Scipy is a concern; after all this is a different library in a different language. BTW, R has `eigen`.

---

<div class="post-metadata">

**Author:** ![juthohaegeman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juthohaegeman/32/8620_2.png) [@juthohaegeman](https://discourse.julialang.org/u/juthohaegeman)\
**Post date:** [September 3, 2018, 7:35am UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/8 "2018-09-03T07:35:05Z")

</div>

I’ve never used R, so to me `eigen` sounded like a deviation from matlab and numpy. Given that R uses it too, is already somewhat comforting. I also don’t have a problem with longer names. Or with names that differ from other languages. In fact, for consistency with `svd`, I would propose `evd`, but I guess nobody would be able to figure out how to compute eigenvalues then.

It’s just, `eigen` sounds bad. It’s like abbreviating multithreading to multi; or like abbreviating singular value decomposition to `singular`. It’s not an abbreviation, it’s just selecting one part out of a word which in itself does not reflect the correct meaning.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [September 3, 2018, 7:44am UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/9 "2018-09-03T07:44:48Z")

</div>

> [@juthohaegeman](#):
>
> `eigen` sounds bad

Probably because you understand it as a word in German? In linear algebra, especially when discussed in English, it has become decoupled from its original meaning, and means “having something to do with T(v) = \lambda v”.

---

<div class="post-metadata">

**Author:** ![loisel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/loisel/32/50626_2.png) [@loisel](https://discourse.julialang.org/u/loisel)\
**Post date:** [September 3, 2018, 8:55am UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/10 "2018-09-03T08:55:42Z")

</div>

> [@Tamas\_Papp](#):
>
> it has become decoupled

It hasn’t become decoupled. I can’t imagine writing “eigen” where “characteristic” would not be allowed in a research paper.

---

<div class="post-metadata">

**Author:** ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)\
**Post date:** [September 5, 2018, 7:34am UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/11 "2018-09-05T07:34:40Z")

</div>

Eigenproblem?

---

<div class="post-metadata">

**Author:** ![jandehaan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jandehaan/32/6805_2.png) [@jandehaan](https://discourse.julialang.org/u/jandehaan)\
**Post date:** [September 5, 2018, 6:27pm UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/12 "2018-09-05T18:27:58Z")

</div>

> [@juthohaegeman](#):
>
> It’s just, `eigen` sounds bad. … It’s not an abbreviation, it’s just selecting one part out of a word which in itself does not reflect the correct meaning.

Indeed, the word “eigen” by itself is meaningless. It begs the question “eigen what?”.  
It is like saying “blue”. Blue what?

By the way, “eigen” also means “own” as in “my own hair (mijn eigen haar)” or  
“your own problem (jouw eigen probleem)”.

---

<div class="post-metadata">

**Author:** ![BLI](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bli/32/37206_2.png) [@BLI](https://discourse.julialang.org/u/BLI)\
**Post date:** [September 5, 2018, 10:04pm UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/13 "2018-09-05T22:04:48Z")

</div>

Word “eigen” as adjective is found in several Germanistic languages (“eigen” in German, Dutch, Norwegian; “egen” in Danish, Norwegian, etc.), and has the same etymological root as English “own”; [eigen - Wiktionary](https://en.wiktionary.org/wiki/eigen) and [eigen - Wiktionary](https://en.wiktionary.org/wiki/eigen).

In English (which, of course, also is a Germanistic language), the verb “to own” = “to possess” has the same form as the adjective “own” = “possessed by”, “one’s own”. English also has the noun form “owner”.

Considering verb and noun, German seems to be an the outlier: “to own” is often translated to “zu besitzen”, and “owner” is “Besitzer” – “besitzen” literally means “to sit on” in the sense of possessing, and apparently comes from Low German. But it would surprise me if there is not a verb (possibly considered archaic) approximately like “zu eigen” in German.

Nordic languages are closer to English: “to own” = “eige” or “eie” in Norwegian/Danish (“besitte” in Norwegian/Danish?), and “owner” = “eiger”/“eier” in Norwegian or “besitter” in (Norwegian)/Danish.

Dutch has “owner” = “eigenaar”, and “to own” = “om eigen” – but it seems like Dutch often expresses “to own” by “to be owner of”.

Anyway… “Eigenwerte”/“eigenwarde”/“egenverdi” (German/Dutch/Danish-Norwegian) means something like “it’s own value” or the “self value”, and obviously refers to \lambda :Av = \lambda v.

**Question** : is it bad/ugly to refer to some function/object by an _adjective_ (eigen)? Not to me, perhaps because I have abstracted the meaning.

One could alternatively argue that “eige”/“eigen” is also a verb form, and as such, “eigen” could be considered an “operator”/actor/function.

Is _eig_ better as a function name? Don’t now… in Nordic/Norwegian, “eig” would be the imperative form of verb “eige”/eie". But the origin of “eig” in MATLAB has probably nothing to do with that…

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [September 6, 2018, 5:24am UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/14 "2018-09-06T05:24:16Z")

</div>

While discussions about etymology are interesting, at this point _eigen_ is pretty much a take it or leave it feature of linear algebra terminology. The only (somewhat) relevant question for programming languages is whether to use the abbreviated `eig` or the full `eigen`.

---

<div class="post-metadata">

**Author:** ![juthohaegeman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juthohaegeman/32/8620_2.png) [@juthohaegeman](https://discourse.julialang.org/u/juthohaegeman)\
**Post date:** [September 6, 2018, 7:19am UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/15 "2018-09-06T07:19:21Z")

</div>

True, and I should maybe have done more research. With only knowing matlab and numpy, Julia seemed like the odd duck by choosing `eigen` instead of `eig`. Some further research indeed shows R also uses `eigen`, numlua uses `eig`, and the C++ Library Eigen does not use an abbreviation for computing the eigenvalue decomposition (oh the irony).

Many other libraries just use the LAPACK name `geev`. Symbolic software (Mathematica & Maple) tends not too abbreviate.

And this overview page [Comparison of linear algebra libraries - Wikipedia](https://en.wikipedia.org/wiki/Comparison_of_linear_algebra_libraries) uses `EVD` (my alternative proposal, because I like the consistency with `svd`) and then spells it out as: EVD - eigenproblems. 🙂

So I guess it does not matter too much, the landscape is already quite diverse.

---

<div class="post-metadata">

**Author:** ![cortner](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cortner/32/204_2.png) [@cortner](https://discourse.julialang.org/u/cortner)\
**Post date:** [September 6, 2018, 7:54am UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/16 "2018-09-06T07:54:22Z")

</div>

In the spirit if discussing simething that has already been decided and will not change may I propose “spectrum”. It has the distinct advantage that it reduces to eigenvalues for matrices, is a shorter word, generalises to operators and most importantly serves as a reminder that Julia now wants to be as distinct from Matlab as possible.

---

<div class="post-metadata">

**Author:** ![jlapeyre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jlapeyre/32/4514_2.png) [@jlapeyre](https://discourse.julialang.org/u/jlapeyre)\
**Post date:** [September 6, 2018, 11:03am UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/17 "2018-09-06T11:03:37Z")

</div>

I strongly disagree with changing names and other things just for the sake of distancing Julia from domain-leading software. I think it should be just the opposite. Follow the convention, or what people most likely know, until a convincing argument to do otherwise is accepted. If there is a good reason, by all means change it.

Julia used to be much more matlab-like in appearance, which was a good thing. It still is often superficially python-like (eg comprehensions), which is also a good thing. Names and syntax have become less matlab-like because developers believed that the changes made Julia a better language, not because of an emotional response to matlab.

In fact one of the guidelines in designing Julia was to avoid innovative syntax. (This is written somewhere.)

---

<div class="post-metadata">

**Author:** ![cortner](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cortner/32/204_2.png) [@cortner](https://discourse.julialang.org/u/cortner)\
**Post date:** [September 6, 2018, 11:10am UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/18 "2018-09-06T11:10:54Z")

</div>

> [@jlapeyre](#):
>
> I strongly disagree with changing names and other things just for the sake of distancing Julia from domain-leading software.

Maybe I should be put this in a block [sarcasm] … [/sarcasm]. I am actually entirely of the same opinion as you. But I’m afraid this argument has long been lost…

---

<div class="post-metadata">

**Author:** ![jlapeyre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jlapeyre/32/4514_2.png) [@jlapeyre](https://discourse.julialang.org/u/jlapeyre)\
**Post date:** [September 6, 2018, 11:22am UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/19 "2018-09-06T11:22:15Z")

</div>

> [@cortner](#):
>
> Maybe I should be put this in a block [sarcasm] … [/sarcasm]. I am actually entirely of the same opinion as you. But I’m afraid this argument has long been lost…

Ah, reading more carefully, I guess I see this. It serves me right for being drawn yet again into useless bikeshedding.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [September 10, 2018, 3:32pm UTC](https://discourse.julialang.org/t/eigen-the-odd-duck/14451/20 "2018-09-10T15:32:51Z")

</div>

“Eigen the odd duck” would be a great name for a children’s book 🦆 🚸😊
