Clash Royale CLAN TAG#URR8PPP
18
down vote
favorite
Introduction
Today we’re gonna take care of the bane of firstyear linear algebra students: matrix definiteness! Apparently this doesn’t yet have a challenge so here we go:
Input
 A $ntimes n$ symmetric Matrix $A$ in any convenient format (you may also of course only take the upper or the lower part of the matrix)
 Optionally: the size of the matrix $n$
What to do?
The challenge is simple: Given a realvalued matrix $ntimes n$ Matrix decide whether it is positive definite by outputting a truthy value if so and a falsey value if not.
You may assume your builtins to actually work precisely and thus don’t have to account for numerical issues which could lead to the wrong behaviour if the strategy / code “provably” should yield the correct result.
Who wins?
This is codegolf, so the shortest code in bytes (perlanguage) wins!
What is a positivedefinite Matrix anyways?
There are apparently 6 equivalent formulations of when a symmetric matrix is positivedefinite. I shall reproduce the three easier ones and reference you to Wikipedia for the more complex ones.
 If $forall vinmathbb R^nsetminus {0}: v^T Av>0$ then $A$ is positivedefinite.
This can be reformulated as:
If for every nonzero vector $v$ the (standard) dot product of $v$ and $Av$ is positive then $A$ is positivedefinite.  Let $lambda_iquad iin{1,ldots,n}$ be the eigenvalues of $A$, if now $forall iin{1,ldots,n}:lambda_i>0$ (that is all eigenvalues are positive) then $A$ is positivedefinite.
If you don’t know what eigenvalues are I suggest you use your favourite search engine to find out, because the explanation (and the needed computation strategies) is too long to be contained in this post.  If the CholeskyDecomposition of $A$ exists, i.e. there exists a lowertriangular matrix $L$ such that $LL^T=A$ then $A$ is positivedefinite. Note that this is equivalent to earlyreturning “false” if at any point the computation of the root during the algorithm fails due to a negative argument.
Examples
For truthy output
begin{pmatrix}1&0&0\0&1&0\0&0&1end{pmatrix}
begin{pmatrix}1&0&0&0\0&2&0&0\0&0&3&0\0&0&0&4end{pmatrix}
begin{pmatrix}5&2&1\2&1&1\1&1&3end{pmatrix}
begin{pmatrix}1&2&2\2&5&0\2&0&30end{pmatrix}
begin{pmatrix}7.15&2.45\2.45&9.37end{pmatrix}
For falsey output
(at least one eigenvalue is 0 / positive semidefinite)
begin{pmatrix}3&2&2\2&4&0\2&0&2end{pmatrix}
(eigenvalues have different signs / indefinite)
begin{pmatrix}1&0&0\0&1&0\0&0&1end{pmatrix}
(all eigenvalues smaller than 0 / negative definite)
begin{pmatrix}1&0&0\0&1&0\0&0&1end{pmatrix}
(all eigenvalues smaller than 0 / negative definite)
begin{pmatrix}2&3&0\3&5&0\0&0&1end{pmatrix}
(all eigenvalues smaller than 0 / negative definite)
begin{pmatrix}7.15&2.45\2.45&9.37end{pmatrix}
(three positive, one negative eigenvalue / indefinite)
begin{pmatrix}7.15&2.45&1.23&3.5\2.45&9.37&2.71&3.14\1.23&2.71&0&6.2\3.5&3.14&6.2&0.56end{pmatrix}
Â Â
show 3 more comments
18
down vote
favorite
Introduction
Today we’re gonna take care of the bane of firstyear linear algebra students: matrix definiteness! Apparently this doesn’t yet have a challenge so here we go:
Input
 A $ntimes n$ symmetric Matrix $A$ in any convenient format (you may also of course only take the upper or the lower part of the matrix)
 Optionally: the size of the matrix $n$
What to do?
The challenge is simple: Given a realvalued matrix $ntimes n$ Matrix decide whether it is positive definite by outputting a truthy value if so and a falsey value if not.
You may assume your builtins to actually work precisely and thus don’t have to account for numerical issues which could lead to the wrong behaviour if the strategy / code “provably” should yield the correct result.
Who wins?
This is codegolf, so the shortest code in bytes (perlanguage) wins!
What is a positivedefinite Matrix anyways?
There are apparently 6 equivalent formulations of when a symmetric matrix is positivedefinite. I shall reproduce the three easier ones and reference you to Wikipedia for the more complex ones.
 If $forall vinmathbb R^nsetminus {0}: v^T Av>0$ then $A$ is positivedefinite.
This can be reformulated as:
If for every nonzero vector $v$ the (standard) dot product of $v$ and $Av$ is positive then $A$ is positivedefinite.  Let $lambda_iquad iin{1,ldots,n}$ be the eigenvalues of $A$, if now $forall iin{1,ldots,n}:lambda_i>0$ (that is all eigenvalues are positive) then $A$ is positivedefinite.
If you don’t know what eigenvalues are I suggest you use your favourite search engine to find out, because the explanation (and the needed computation strategies) is too long to be contained in this post.  If the CholeskyDecomposition of $A$ exists, i.e. there exists a lowertriangular matrix $L$ such that $LL^T=A$ then $A$ is positivedefinite. Note that this is equivalent to earlyreturning “false” if at any point the computation of the root during the algorithm fails due to a negative argument.
Examples
For truthy output
begin{pmatrix}1&0&0\0&1&0\0&0&1end{pmatrix}
begin{pmatrix}1&0&0&0\0&2&0&0\0&0&3&0\0&0&0&4end{pmatrix}
begin{pmatrix}5&2&1\2&1&1\1&1&3end{pmatrix}
begin{pmatrix}1&2&2\2&5&0\2&0&30end{pmatrix}
begin{pmatrix}7.15&2.45\2.45&9.37end{pmatrix}
For falsey output
(at least one eigenvalue is 0 / positive semidefinite)
begin{pmatrix}3&2&2\2&4&0\2&0&2end{pmatrix}
(eigenvalues have different signs / indefinite)
begin{pmatrix}1&0&0\0&1&0\0&0&1end{pmatrix}
(all eigenvalues smaller than 0 / negative definite)
begin{pmatrix}1&0&0\0&1&0\0&0&1end{pmatrix}
(all eigenvalues smaller than 0 / negative definite)
begin{pmatrix}2&3&0\3&5&0\0&0&1end{pmatrix}
(all eigenvalues smaller than 0 / negative definite)
begin{pmatrix}7.15&2.45\2.45&9.37end{pmatrix}
(three positive, one negative eigenvalue / indefinite)
begin{pmatrix}7.15&2.45&1.23&3.5\2.45&9.37&2.71&3.14\1.23&2.71&0&6.2\3.5&3.14&6.2&0.56end{pmatrix}

This challenge was sandboxed.
âÂ SEJPM
Sep 23 at 11:48

You need to provide a better definition of what we’re supposed to be looking for rather than assuming we can all read mathematical notation (or all know what an “eigenvalue” is). A worked example would be useful too.
âÂ Shaggy
Sep 23 at 15:53 
9@Shaggy I think the challenge is better without all the background to clog it up. There are many existing explanations of what an eigenvalue is elsewhere, and this post is already really large.
âÂ W W
Sep 23 at 16:37 
1The challenge would have been nicer hadn’t you restrict the input to symmetric matrices.
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 15:55 
1I meant just checking for the sign of eigenvalues is also boring. Different tastes I know 😉
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:11
Â Â
show 3 more comments
18
down vote
favorite
18
down vote
favorite
Introduction
Today we’re gonna take care of the bane of firstyear linear algebra students: matrix definiteness! Apparently this doesn’t yet have a challenge so here we go:
Input
 A $ntimes n$ symmetric Matrix $A$ in any convenient format (you may also of course only take the upper or the lower part of the matrix)
 Optionally: the size of the matrix $n$
What to do?
The challenge is simple: Given a realvalued matrix $ntimes n$ Matrix decide whether it is positive definite by outputting a truthy value if so and a falsey value if not.
You may assume your builtins to actually work precisely and thus don’t have to account for numerical issues which could lead to the wrong behaviour if the strategy / code “provably” should yield the correct result.
Who wins?
This is codegolf, so the shortest code in bytes (perlanguage) wins!
What is a positivedefinite Matrix anyways?
There are apparently 6 equivalent formulations of when a symmetric matrix is positivedefinite. I shall reproduce the three easier ones and reference you to Wikipedia for the more complex ones.
 If $forall vinmathbb R^nsetminus {0}: v^T Av>0$ then $A$ is positivedefinite.
This can be reformulated as:
If for every nonzero vector $v$ the (standard) dot product of $v$ and $Av$ is positive then $A$ is positivedefinite.  Let $lambda_iquad iin{1,ldots,n}$ be the eigenvalues of $A$, if now $forall iin{1,ldots,n}:lambda_i>0$ (that is all eigenvalues are positive) then $A$ is positivedefinite.
If you don’t know what eigenvalues are I suggest you use your favourite search engine to find out, because the explanation (and the needed computation strategies) is too long to be contained in this post.  If the CholeskyDecomposition of $A$ exists, i.e. there exists a lowertriangular matrix $L$ such that $LL^T=A$ then $A$ is positivedefinite. Note that this is equivalent to earlyreturning “false” if at any point the computation of the root during the algorithm fails due to a negative argument.
Examples
For truthy output
begin{pmatrix}1&0&0\0&1&0\0&0&1end{pmatrix}
begin{pmatrix}1&0&0&0\0&2&0&0\0&0&3&0\0&0&0&4end{pmatrix}
begin{pmatrix}5&2&1\2&1&1\1&1&3end{pmatrix}
begin{pmatrix}1&2&2\2&5&0\2&0&30end{pmatrix}
begin{pmatrix}7.15&2.45\2.45&9.37end{pmatrix}
For falsey output
(at least one eigenvalue is 0 / positive semidefinite)
begin{pmatrix}3&2&2\2&4&0\2&0&2end{pmatrix}
(eigenvalues have different signs / indefinite)
begin{pmatrix}1&0&0\0&1&0\0&0&1end{pmatrix}
(all eigenvalues smaller than 0 / negative definite)
begin{pmatrix}1&0&0\0&1&0\0&0&1end{pmatrix}
(all eigenvalues smaller than 0 / negative definite)
begin{pmatrix}2&3&0\3&5&0\0&0&1end{pmatrix}
(all eigenvalues smaller than 0 / negative definite)
begin{pmatrix}7.15&2.45\2.45&9.37end{pmatrix}
(three positive, one negative eigenvalue / indefinite)
begin{pmatrix}7.15&2.45&1.23&3.5\2.45&9.37&2.71&3.14\1.23&2.71&0&6.2\3.5&3.14&6.2&0.56end{pmatrix}
Introduction
Today we’re gonna take care of the bane of firstyear linear algebra students: matrix definiteness! Apparently this doesn’t yet have a challenge so here we go:
Input
 A $ntimes n$ symmetric Matrix $A$ in any convenient format (you may also of course only take the upper or the lower part of the matrix)
 Optionally: the size of the matrix $n$
What to do?
The challenge is simple: Given a realvalued matrix $ntimes n$ Matrix decide whether it is positive definite by outputting a truthy value if so and a falsey value if not.
You may assume your builtins to actually work precisely and thus don’t have to account for numerical issues which could lead to the wrong behaviour if the strategy / code “provably” should yield the correct result.
Who wins?
This is codegolf, so the shortest code in bytes (perlanguage) wins!
What is a positivedefinite Matrix anyways?
There are apparently 6 equivalent formulations of when a symmetric matrix is positivedefinite. I shall reproduce the three easier ones and reference you to Wikipedia for the more complex ones.
 If $forall vinmathbb R^nsetminus {0}: v^T Av>0$ then $A$ is positivedefinite.
This can be reformulated as:
If for every nonzero vector $v$ the (standard) dot product of $v$ and $Av$ is positive then $A$ is positivedefinite.  Let $lambda_iquad iin{1,ldots,n}$ be the eigenvalues of $A$, if now $forall iin{1,ldots,n}:lambda_i>0$ (that is all eigenvalues are positive) then $A$ is positivedefinite.
If you don’t know what eigenvalues are I suggest you use your favourite search engine to find out, because the explanation (and the needed computation strategies) is too long to be contained in this post.  If the CholeskyDecomposition of $A$ exists, i.e. there exists a lowertriangular matrix $L$ such that $LL^T=A$ then $A$ is positivedefinite. Note that this is equivalent to earlyreturning “false” if at any point the computation of the root during the algorithm fails due to a negative argument.
Examples
For truthy output
begin{pmatrix}1&0&0\0&1&0\0&0&1end{pmatrix}
begin{pmatrix}1&0&0&0\0&2&0&0\0&0&3&0\0&0&0&4end{pmatrix}
begin{pmatrix}5&2&1\2&1&1\1&1&3end{pmatrix}
begin{pmatrix}1&2&2\2&5&0\2&0&30end{pmatrix}
begin{pmatrix}7.15&2.45\2.45&9.37end{pmatrix}
For falsey output
(at least one eigenvalue is 0 / positive semidefinite)
begin{pmatrix}3&2&2\2&4&0\2&0&2end{pmatrix}
(eigenvalues have different signs / indefinite)
begin{pmatrix}1&0&0\0&1&0\0&0&1end{pmatrix}
(all eigenvalues smaller than 0 / negative definite)
begin{pmatrix}1&0&0\0&1&0\0&0&1end{pmatrix}
(all eigenvalues smaller than 0 / negative definite)
begin{pmatrix}2&3&0\3&5&0\0&0&1end{pmatrix}
(all eigenvalues smaller than 0 / negative definite)
begin{pmatrix}7.15&2.45\2.45&9.37end{pmatrix}
(three positive, one negative eigenvalue / indefinite)
begin{pmatrix}7.15&2.45&1.23&3.5\2.45&9.37&2.71&3.14\1.23&2.71&0&6.2\3.5&3.14&6.2&0.56end{pmatrix}

This challenge was sandboxed.
âÂ SEJPM
Sep 23 at 11:48

You need to provide a better definition of what we’re supposed to be looking for rather than assuming we can all read mathematical notation (or all know what an “eigenvalue” is). A worked example would be useful too.
âÂ Shaggy
Sep 23 at 15:53 
9@Shaggy I think the challenge is better without all the background to clog it up. There are many existing explanations of what an eigenvalue is elsewhere, and this post is already really large.
âÂ W W
Sep 23 at 16:37 
1The challenge would have been nicer hadn’t you restrict the input to symmetric matrices.
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 15:55 
1I meant just checking for the sign of eigenvalues is also boring. Different tastes I know 😉
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:11
Â Â
show 3 more comments

This challenge was sandboxed.
âÂ SEJPM
Sep 23 at 11:48

You need to provide a better definition of what we’re supposed to be looking for rather than assuming we can all read mathematical notation (or all know what an “eigenvalue” is). A worked example would be useful too.
âÂ Shaggy
Sep 23 at 15:53 
9@Shaggy I think the challenge is better without all the background to clog it up. There are many existing explanations of what an eigenvalue is elsewhere, and this post is already really large.
âÂ W W
Sep 23 at 16:37 
1The challenge would have been nicer hadn’t you restrict the input to symmetric matrices.
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 15:55 
1I meant just checking for the sign of eigenvalues is also boring. Different tastes I know 😉
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:11
âÂ SEJPM
Sep 23 at 11:48
âÂ SEJPM
Sep 23 at 11:48
âÂ Shaggy
Sep 23 at 15:53
âÂ Shaggy
Sep 23 at 15:53
âÂ W W
Sep 23 at 16:37
âÂ W W
Sep 23 at 16:37
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 15:55
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 15:55
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:11
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:11
Â Â
show 3 more comments
12 Answers
12
active
oldest
votes
11
down vote
C, 108 bytes
1 byte thanks to Logern
3 bytes thanks to ceilingcat
f(M,n,i)double**M;{for(i=n*n;i;)M[i/n][i%n]=M[n][i%n]*M[i/n][n]/M[n][n];return M[n][n]>0&(!nf(M,n1));}
Try it online!
Performs Gaussian elimination and checks whether all diagonal elements are positive (Sylvester’s criterion). Argument n
is the size of the matrix minus one.

Perhaps save a character with float instead of double?
âÂ Jens
Sep 23 at 15:10 
106 bytes – Try it online!
âÂ Logern
Sep 23 at 15:35 
You can shave another character if you drop
i=0
in the for loop, make the recursive callf(M,n1,0)
and the initial call with 0 as the third arg.
âÂ Jens
Sep 23 at 19:36 
@Jens 1. Using floats instead of doubles can quickly lead to noticable rounding errors, so I don’t think the one byte saved is worth it. 2. Initializing a variable via an additional argument looks like cheating to me.
âÂ nwellnhof
Sep 24 at 17:42 
@Logern I refuse to use the “omit the return statement” trick in my C answers. But thanks for the other byte saved.
âÂ nwellnhof
Sep 24 at 17:45
Â Â
show 1 more comment
9
down vote
MATLAB/Octave, 19 17 12 bytes
@(A)eig(A)>0
Try it online!
The function eig provides the eigenvalues in ascending order, so if the first eigenvalue is greater than zero, the other ones are too.

You can drop the
f=
at the beginning – anonymous functions are generally accepted as answers.
âÂ Delfad0r
Sep 23 at 15:05 
Thanks for the tip!
âÂ Daniel Turizo
Sep 23 at 15:11 
Even if its a vector? Interesting
âÂ Daniel Turizo
Sep 23 at 15:17 
1+1. I’ve added a link for trying it online. Hope you don’t mind. Note that it is also proving that the output values despite being arrays do count as the correct “truthy” or “falsey” values as per the link @Delfad0r posted.
âÂ Tom Carpenter
Sep 23 at 17:03

2Having said that, it fails for the first “falsey” test case on TIO. I’m guessing due to a precision issue – one of the Eigen values comes out as
8.9219e17
rather than 0.
âÂ Tom Carpenter
Sep 23 at 17:05
Â Â
show 4 more comments
7
down vote
Jelly, 11 10 bytes
Ã¡Â¹ÂÃ¡Â¹ÂÃ¢ÂÂ¬$ÃÂ¬ÃÂÃ¡Â¸ÂÃ¡Â¹Â>0
Uses Sylvester’s criterion.
Try it online!
How it works
Ã¡Â¹ÂÃ¡Â¹ÂÃ¢ÂÂ¬$ÃÂ¬ÃÂÃ¡Â¸ÂÃ¡Â¹Â>0 Main link. Argument: M (matrix)
$ÃÂ¬ Do the following until a fixed point is encountered.
Ã¡Â¹Â Pop; remove the last row of the matrix.
Ã¡Â¹ÂÃ¢ÂÂ¬ Pop each; remove the last entry of each row.
ÃÂÃ¡Â¸Â Take the determinants of the resulting minors.
Ã¡Â¹Â Take the minimum.
>0 Test if the least determinant is positive, i.e., if all determinants are.
add a commentÂ Â
6
down vote
R, 29 bytes
function(m)all(eigen(m)$va>0)
Try it online!
Alternative using cholesky :
R, 34 33 bytes
function(m)is.array(try(chol(m)))
Try it online!
1 byte thanks to @Giuseppe
add a commentÂ Â
6
down vote
Haskell, 56 bytes
f((x:y):z)=x>0&&f[zipWith()v$map(u/x*)yu:v<z]
f=1>0
Try it online!
Basically a port of nwellnhof’s answer. Performs gaussian elimination and checks whether the elements on the main diagonal are positive.
Fails the first falsey output because of rounding errors, but it would theoretically work with infinite precision. Thanks to Curtis Bechtel’s suggestion, now the outputs are all correct.

2you can add
inputs :: [[[Rational]]]
to get correct answers
âÂ Curtis Bechtel
Sep 23 at 20:38
add a commentÂ Â
4
down vote
Wolfram Language (Mathematica), 20 bytes
0<Min@Eigenvalues@#&
Try it online!

Should 4th test case be False?
âÂ tsh
Sep 23 at 14:48 
@tsh Fixed, I am dumb!
âÂ Mr. Xcoder
Sep 23 at 14:57 
8Funny how Mathematica has a builtin for this, but its name is longer than your solution.
âÂ Federico Poloni
Sep 23 at 15:04

@FedericoPoloni: Wouldn’t a solution using NullSpace or MatrixRank be even shorter? If Null space is zero then the matrix is positive definite.
âÂ Phil H
Sep 24 at 15:41 
@PhilH No, I’m afraid that doesn’t work by itself. For instance, the second falsey example (diagonal matrix with (1,1,1)) has rank 3, but is not positive definite.
âÂ Federico Poloni
Sep 24 at 16:39
add a commentÂ Â
3
down vote
MATL, 4 bytes
Yv0>
Try it online!
I’ve noticed that for the [3 2 2; 2 4 0; 2 0 2]
test case, MATL calculates the 0
eigenvalue with a very small inaccuracy, computing something as low as about $10^{18}$. This therefore fails the first falsy test case due to precision issues. Thanks to Luis Mendo for pointing out that a nonempty array is truthy iff all its entries differ from 0, saving 1 byte.

1@LuisMendo Thanks, I learned something new about MATL today!
âÂ Mr. Xcoder
Sep 26 at 21:53 
My pleasure 🙂 Here’s a better explanation by Suever. I forgot to say that for complexvalued arrays only the real part is compared against zero. So
[1 2 3j]
is falsey
âÂ Luis Mendo
Sep 26 at 22:04
add a commentÂ Â
2
down vote
Mathematica, 29 28 bytes
AllTrue[Eigenvalues@#,#>0&]&
Definition 2.
add a commentÂ Â
2
down vote
Julia 1.0, 28 bytes
using LinearAlgebra
isposdef
Try it online!
Julia 0.6, 8 bytes
isposdef
Try it online!
add a commentÂ Â
2
down vote
MATL, 6 bytes
It is possible to do it using even less bytes, @Mr. Xcoder managed to find a 5 byte MATL answer!
YvX<0>
Explanation
Yv compute eigenvalues
X< take the minimum
0> check whether it is greather than zero
Try it online!

Fails on the first falsy test case. See my deleted answer.
âÂ Mr. Xcoder
Sep 25 at 6:59 
1@Mr.Xcoder Oh, you even submitted an answer before me. I think you should undelete your answer as it just depends on rounding issues. (I think you can expect answers to use limited precision arithmetic – I think only the CAS languages here use exact computations.)
âÂ flawr
Sep 25 at 18:02 
Following your advice, I’ve undeleted it.
âÂ Mr. Xcoder
Sep 25 at 21:18
add a commentÂ Â
1
down vote
Maple, 33 bytes
(i.e. my 2 cents)
with(LinearAlgebra):
IsDefinite(A)

Hello and welcome to PPCG; I am unfamiliar with Maple, though is the newline necessary?
âÂ Jonathan Frech
Sep 24 at 16:06 
@JonathanFrech Hello and thanks. No it’s not. I didn’t count it btw.
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:09 
To me your current byte count seems to reflect the newline character.
âÂ Jonathan Frech
Sep 24 at 16:16 
@JonathanFrech Duh, my bad
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:18 
1Well … now your code and your byte count disagree.
âÂ Jonathan Frech
Sep 24 at 17:07
add a commentÂ Â
0
down vote
JavaScript (ES6), Â 99 95Â 88 bytes
Same method as nwellnhof’s answer. Returns $0$ or $1$.
f=(m,n=0,R=m[n])=>R?f(m,n+1)&R[m.map((r,y)=>y<n&&R.map((v,x)=>r[x]=v*r[n]/R[n])),n]>0:1
Try it online!
add a commentÂ Â
12 Answers
12
active
oldest
votes
12 Answers
12
active
oldest
votes
active
oldest
votes
active
oldest
votes
11
down vote
C, 108 bytes
1 byte thanks to Logern
3 bytes thanks to ceilingcat
f(M,n,i)double**M;{for(i=n*n;i;)M[i/n][i%n]=M[n][i%n]*M[i/n][n]/M[n][n];return M[n][n]>0&(!nf(M,n1));}
Try it online!
Performs Gaussian elimination and checks whether all diagonal elements are positive (Sylvester’s criterion). Argument n
is the size of the matrix minus one.

Perhaps save a character with float instead of double?
âÂ Jens
Sep 23 at 15:10 
106 bytes – Try it online!
âÂ Logern
Sep 23 at 15:35 
You can shave another character if you drop
i=0
in the for loop, make the recursive callf(M,n1,0)
and the initial call with 0 as the third arg.
âÂ Jens
Sep 23 at 19:36 
@Jens 1. Using floats instead of doubles can quickly lead to noticable rounding errors, so I don’t think the one byte saved is worth it. 2. Initializing a variable via an additional argument looks like cheating to me.
âÂ nwellnhof
Sep 24 at 17:42 
@Logern I refuse to use the “omit the return statement” trick in my C answers. But thanks for the other byte saved.
âÂ nwellnhof
Sep 24 at 17:45
Â Â
show 1 more comment
11
down vote
C, 108 bytes
1 byte thanks to Logern
3 bytes thanks to ceilingcat
f(M,n,i)double**M;{for(i=n*n;i;)M[i/n][i%n]=M[n][i%n]*M[i/n][n]/M[n][n];return M[n][n]>0&(!nf(M,n1));}
Try it online!
Performs Gaussian elimination and checks whether all diagonal elements are positive (Sylvester’s criterion). Argument n
is the size of the matrix minus one.

Perhaps save a character with float instead of double?
âÂ Jens
Sep 23 at 15:10 
106 bytes – Try it online!
âÂ Logern
Sep 23 at 15:35 
You can shave another character if you drop
i=0
in the for loop, make the recursive callf(M,n1,0)
and the initial call with 0 as the third arg.
âÂ Jens
Sep 23 at 19:36 
@Jens 1. Using floats instead of doubles can quickly lead to noticable rounding errors, so I don’t think the one byte saved is worth it. 2. Initializing a variable via an additional argument looks like cheating to me.
âÂ nwellnhof
Sep 24 at 17:42 
@Logern I refuse to use the “omit the return statement” trick in my C answers. But thanks for the other byte saved.
âÂ nwellnhof
Sep 24 at 17:45
Â Â
show 1 more comment
11
down vote
11
down vote
C, 108 bytes
1 byte thanks to Logern
3 bytes thanks to ceilingcat
f(M,n,i)double**M;{for(i=n*n;i;)M[i/n][i%n]=M[n][i%n]*M[i/n][n]/M[n][n];return M[n][n]>0&(!nf(M,n1));}
Try it online!
Performs Gaussian elimination and checks whether all diagonal elements are positive (Sylvester’s criterion). Argument n
is the size of the matrix minus one.
C, 108 bytes
1 byte thanks to Logern
3 bytes thanks to ceilingcat
f(M,n,i)double**M;{for(i=n*n;i;)M[i/n][i%n]=M[n][i%n]*M[i/n][n]/M[n][n];return M[n][n]>0&(!nf(M,n1));}
Try it online!
Performs Gaussian elimination and checks whether all diagonal elements are positive (Sylvester’s criterion). Argument n
is the size of the matrix minus one.

Perhaps save a character with float instead of double?
âÂ Jens
Sep 23 at 15:10 
106 bytes – Try it online!
âÂ Logern
Sep 23 at 15:35 
You can shave another character if you drop
i=0
in the for loop, make the recursive callf(M,n1,0)
and the initial call with 0 as the third arg.
âÂ Jens
Sep 23 at 19:36 
@Jens 1. Using floats instead of doubles can quickly lead to noticable rounding errors, so I don’t think the one byte saved is worth it. 2. Initializing a variable via an additional argument looks like cheating to me.
âÂ nwellnhof
Sep 24 at 17:42 
@Logern I refuse to use the “omit the return statement” trick in my C answers. But thanks for the other byte saved.
âÂ nwellnhof
Sep 24 at 17:45
Â Â
show 1 more comment

Perhaps save a character with float instead of double?
âÂ Jens
Sep 23 at 15:10 
106 bytes – Try it online!
âÂ Logern
Sep 23 at 15:35 
You can shave another character if you drop
i=0
in the for loop, make the recursive callf(M,n1,0)
and the initial call with 0 as the third arg.
âÂ Jens
Sep 23 at 19:36 
@Jens 1. Using floats instead of doubles can quickly lead to noticable rounding errors, so I don’t think the one byte saved is worth it. 2. Initializing a variable via an additional argument looks like cheating to me.
âÂ nwellnhof
Sep 24 at 17:42 
@Logern I refuse to use the “omit the return statement” trick in my C answers. But thanks for the other byte saved.
âÂ nwellnhof
Sep 24 at 17:45
âÂ Jens
Sep 23 at 15:10
âÂ Jens
Sep 23 at 15:10
âÂ Logern
Sep 23 at 15:35
âÂ Logern
Sep 23 at 15:35
i=0
in the for loop, make the recursive call f(M,n1,0)
and the initial call with 0 as the third arg.âÂ Jens
Sep 23 at 19:36
i=0
in the for loop, make the recursive call f(M,n1,0)
and the initial call with 0 as the third arg.âÂ Jens
Sep 23 at 19:36
âÂ nwellnhof
Sep 24 at 17:42
âÂ nwellnhof
Sep 24 at 17:42
âÂ nwellnhof
Sep 24 at 17:45
âÂ nwellnhof
Sep 24 at 17:45
Â Â
show 1 more comment
9
down vote
MATLAB/Octave, 19 17 12 bytes
@(A)eig(A)>0
Try it online!
The function eig provides the eigenvalues in ascending order, so if the first eigenvalue is greater than zero, the other ones are too.

You can drop the
f=
at the beginning – anonymous functions are generally accepted as answers.
âÂ Delfad0r
Sep 23 at 15:05 
Thanks for the tip!
âÂ Daniel Turizo
Sep 23 at 15:11 
Even if its a vector? Interesting
âÂ Daniel Turizo
Sep 23 at 15:17 
1+1. I’ve added a link for trying it online. Hope you don’t mind. Note that it is also proving that the output values despite being arrays do count as the correct “truthy” or “falsey” values as per the link @Delfad0r posted.
âÂ Tom Carpenter
Sep 23 at 17:03

2Having said that, it fails for the first “falsey” test case on TIO. I’m guessing due to a precision issue – one of the Eigen values comes out as
8.9219e17
rather than 0.
âÂ Tom Carpenter
Sep 23 at 17:05
Â Â
show 4 more comments
9
down vote
MATLAB/Octave, 19 17 12 bytes
@(A)eig(A)>0
Try it online!
The function eig provides the eigenvalues in ascending order, so if the first eigenvalue is greater than zero, the other ones are too.

You can drop the
f=
at the beginning – anonymous functions are generally accepted as answers.
âÂ Delfad0r
Sep 23 at 15:05 
Thanks for the tip!
âÂ Daniel Turizo
Sep 23 at 15:11 
Even if its a vector? Interesting
âÂ Daniel Turizo
Sep 23 at 15:17 
1+1. I’ve added a link for trying it online. Hope you don’t mind. Note that it is also proving that the output values despite being arrays do count as the correct “truthy” or “falsey” values as per the link @Delfad0r posted.
âÂ Tom Carpenter
Sep 23 at 17:03

2Having said that, it fails for the first “falsey” test case on TIO. I’m guessing due to a precision issue – one of the Eigen values comes out as
8.9219e17
rather than 0.
âÂ Tom Carpenter
Sep 23 at 17:05
Â Â
show 4 more comments
9
down vote
9
down vote
MATLAB/Octave, 19 17 12 bytes
@(A)eig(A)>0
Try it online!
The function eig provides the eigenvalues in ascending order, so if the first eigenvalue is greater than zero, the other ones are too.
MATLAB/Octave, 19 17 12 bytes
@(A)eig(A)>0
Try it online!
The function eig provides the eigenvalues in ascending order, so if the first eigenvalue is greater than zero, the other ones are too.

You can drop the
f=
at the beginning – anonymous functions are generally accepted as answers.
âÂ Delfad0r
Sep 23 at 15:05 
Thanks for the tip!
âÂ Daniel Turizo
Sep 23 at 15:11 
Even if its a vector? Interesting
âÂ Daniel Turizo
Sep 23 at 15:17 
1+1. I’ve added a link for trying it online. Hope you don’t mind. Note that it is also proving that the output values despite being arrays do count as the correct “truthy” or “falsey” values as per the link @Delfad0r posted.
âÂ Tom Carpenter
Sep 23 at 17:03

2Having said that, it fails for the first “falsey” test case on TIO. I’m guessing due to a precision issue – one of the Eigen values comes out as
8.9219e17
rather than 0.
âÂ Tom Carpenter
Sep 23 at 17:05
Â Â
show 4 more comments

You can drop the
f=
at the beginning – anonymous functions are generally accepted as answers.
âÂ Delfad0r
Sep 23 at 15:05 
Thanks for the tip!
âÂ Daniel Turizo
Sep 23 at 15:11 
Even if its a vector? Interesting
âÂ Daniel Turizo
Sep 23 at 15:17 
1+1. I’ve added a link for trying it online. Hope you don’t mind. Note that it is also proving that the output values despite being arrays do count as the correct “truthy” or “falsey” values as per the link @Delfad0r posted.
âÂ Tom Carpenter
Sep 23 at 17:03

2Having said that, it fails for the first “falsey” test case on TIO. I’m guessing due to a precision issue – one of the Eigen values comes out as
8.9219e17
rather than 0.
âÂ Tom Carpenter
Sep 23 at 17:05
f=
at the beginning – anonymous functions are generally accepted as answers.âÂ Delfad0r
Sep 23 at 15:05
f=
at the beginning – anonymous functions are generally accepted as answers.âÂ Delfad0r
Sep 23 at 15:05
âÂ Daniel Turizo
Sep 23 at 15:11
âÂ Daniel Turizo
Sep 23 at 15:11
âÂ Daniel Turizo
Sep 23 at 15:17
âÂ Daniel Turizo
Sep 23 at 15:17
âÂ Tom Carpenter
Sep 23 at 17:03
âÂ Tom Carpenter
Sep 23 at 17:03
8.9219e17
rather than 0.âÂ Tom Carpenter
Sep 23 at 17:05
8.9219e17
rather than 0.âÂ Tom Carpenter
Sep 23 at 17:05
Â Â
show 4 more comments
7
down vote
Jelly, 11 10 bytes
Ã¡Â¹ÂÃ¡Â¹ÂÃ¢ÂÂ¬$ÃÂ¬ÃÂÃ¡Â¸ÂÃ¡Â¹Â>0
Uses Sylvester’s criterion.
Try it online!
How it works
Ã¡Â¹ÂÃ¡Â¹ÂÃ¢ÂÂ¬$ÃÂ¬ÃÂÃ¡Â¸ÂÃ¡Â¹Â>0 Main link. Argument: M (matrix)
$ÃÂ¬ Do the following until a fixed point is encountered.
Ã¡Â¹Â Pop; remove the last row of the matrix.
Ã¡Â¹ÂÃ¢ÂÂ¬ Pop each; remove the last entry of each row.
ÃÂÃ¡Â¸Â Take the determinants of the resulting minors.
Ã¡Â¹Â Take the minimum.
>0 Test if the least determinant is positive, i.e., if all determinants are.
add a commentÂ Â
7
down vote
Jelly, 11 10 bytes
Ã¡Â¹ÂÃ¡Â¹ÂÃ¢ÂÂ¬$ÃÂ¬ÃÂÃ¡Â¸ÂÃ¡Â¹Â>0
Uses Sylvester’s criterion.
Try it online!
How it works
Ã¡Â¹ÂÃ¡Â¹ÂÃ¢ÂÂ¬$ÃÂ¬ÃÂÃ¡Â¸ÂÃ¡Â¹Â>0 Main link. Argument: M (matrix)
$ÃÂ¬ Do the following until a fixed point is encountered.
Ã¡Â¹Â Pop; remove the last row of the matrix.
Ã¡Â¹ÂÃ¢ÂÂ¬ Pop each; remove the last entry of each row.
ÃÂÃ¡Â¸Â Take the determinants of the resulting minors.
Ã¡Â¹Â Take the minimum.
>0 Test if the least determinant is positive, i.e., if all determinants are.
add a commentÂ Â
7
down vote
7
down vote
Jelly, 11 10 bytes
Ã¡Â¹ÂÃ¡Â¹ÂÃ¢ÂÂ¬$ÃÂ¬ÃÂÃ¡Â¸ÂÃ¡Â¹Â>0
Uses Sylvester’s criterion.
Try it online!
How it works
Ã¡Â¹ÂÃ¡Â¹ÂÃ¢ÂÂ¬$ÃÂ¬ÃÂÃ¡Â¸ÂÃ¡Â¹Â>0 Main link. Argument: M (matrix)
$ÃÂ¬ Do the following until a fixed point is encountered.
Ã¡Â¹Â Pop; remove the last row of the matrix.
Ã¡Â¹ÂÃ¢ÂÂ¬ Pop each; remove the last entry of each row.
ÃÂÃ¡Â¸Â Take the determinants of the resulting minors.
Ã¡Â¹Â Take the minimum.
>0 Test if the least determinant is positive, i.e., if all determinants are.
Jelly, 11 10 bytes
Ã¡Â¹ÂÃ¡Â¹ÂÃ¢ÂÂ¬$ÃÂ¬ÃÂÃ¡Â¸ÂÃ¡Â¹Â>0
Uses Sylvester’s criterion.
Try it online!
How it works
Ã¡Â¹ÂÃ¡Â¹ÂÃ¢ÂÂ¬$ÃÂ¬ÃÂÃ¡Â¸ÂÃ¡Â¹Â>0 Main link. Argument: M (matrix)
$ÃÂ¬ Do the following until a fixed point is encountered.
Ã¡Â¹Â Pop; remove the last row of the matrix.
Ã¡Â¹ÂÃ¢ÂÂ¬ Pop each; remove the last entry of each row.
ÃÂÃ¡Â¸Â Take the determinants of the resulting minors.
Ã¡Â¹Â Take the minimum.
>0 Test if the least determinant is positive, i.e., if all determinants are.
add a commentÂ Â
add a commentÂ Â
6
down vote
R, 29 bytes
function(m)all(eigen(m)$va>0)
Try it online!
Alternative using cholesky :
R, 34 33 bytes
function(m)is.array(try(chol(m)))
Try it online!
1 byte thanks to @Giuseppe
add a commentÂ Â
6
down vote
R, 29 bytes
function(m)all(eigen(m)$va>0)
Try it online!
Alternative using cholesky :
R, 34 33 bytes
function(m)is.array(try(chol(m)))
Try it online!
1 byte thanks to @Giuseppe
add a commentÂ Â
6
down vote
6
down vote
R, 29 bytes
function(m)all(eigen(m)$va>0)
Try it online!
Alternative using cholesky :
R, 34 33 bytes
function(m)is.array(try(chol(m)))
Try it online!
1 byte thanks to @Giuseppe
R, 29 bytes
function(m)all(eigen(m)$va>0)
Try it online!
Alternative using cholesky :
R, 34 33 bytes
function(m)is.array(try(chol(m)))
Try it online!
1 byte thanks to @Giuseppe
add a commentÂ Â
add a commentÂ Â
6
down vote
Haskell, 56 bytes
f((x:y):z)=x>0&&f[zipWith()v$map(u/x*)yu:v<z]
f=1>0
Try it online!
Basically a port of nwellnhof’s answer. Performs gaussian elimination and checks whether the elements on the main diagonal are positive.
Fails the first falsey output because of rounding errors, but it would theoretically work with infinite precision. Thanks to Curtis Bechtel’s suggestion, now the outputs are all correct.

2you can add
inputs :: [[[Rational]]]
to get correct answers
âÂ Curtis Bechtel
Sep 23 at 20:38
add a commentÂ Â
6
down vote
Haskell, 56 bytes
f((x:y):z)=x>0&&f[zipWith()v$map(u/x*)yu:v<z]
f=1>0
Try it online!
Basically a port of nwellnhof’s answer. Performs gaussian elimination and checks whether the elements on the main diagonal are positive.
Fails the first falsey output because of rounding errors, but it would theoretically work with infinite precision. Thanks to Curtis Bechtel’s suggestion, now the outputs are all correct.

2you can add
inputs :: [[[Rational]]]
to get correct answers
âÂ Curtis Bechtel
Sep 23 at 20:38
add a commentÂ Â
6
down vote
6
down vote
Haskell, 56 bytes
f((x:y):z)=x>0&&f[zipWith()v$map(u/x*)yu:v<z]
f=1>0
Try it online!
Basically a port of nwellnhof’s answer. Performs gaussian elimination and checks whether the elements on the main diagonal are positive.
Fails the first falsey output because of rounding errors, but it would theoretically work with infinite precision. Thanks to Curtis Bechtel’s suggestion, now the outputs are all correct.
Haskell, 56 bytes
f((x:y):z)=x>0&&f[zipWith()v$map(u/x*)yu:v<z]
f=1>0
Try it online!
Basically a port of nwellnhof’s answer. Performs gaussian elimination and checks whether the elements on the main diagonal are positive.
Fails the first falsey output because of rounding errors, but it would theoretically work with infinite precision. Thanks to Curtis Bechtel’s suggestion, now the outputs are all correct.

2you can add
inputs :: [[[Rational]]]
to get correct answers
âÂ Curtis Bechtel
Sep 23 at 20:38
add a commentÂ Â

2you can add
inputs :: [[[Rational]]]
to get correct answers
âÂ Curtis Bechtel
Sep 23 at 20:38
inputs :: [[[Rational]]]
to get correct answersâÂ Curtis Bechtel
Sep 23 at 20:38
inputs :: [[[Rational]]]
to get correct answersâÂ Curtis Bechtel
Sep 23 at 20:38
add a commentÂ Â
4
down vote
Wolfram Language (Mathematica), 20 bytes
0<Min@Eigenvalues@#&
Try it online!

Should 4th test case be False?
âÂ tsh
Sep 23 at 14:48 
@tsh Fixed, I am dumb!
âÂ Mr. Xcoder
Sep 23 at 14:57 
8Funny how Mathematica has a builtin for this, but its name is longer than your solution.
âÂ Federico Poloni
Sep 23 at 15:04

@FedericoPoloni: Wouldn’t a solution using NullSpace or MatrixRank be even shorter? If Null space is zero then the matrix is positive definite.
âÂ Phil H
Sep 24 at 15:41 
@PhilH No, I’m afraid that doesn’t work by itself. For instance, the second falsey example (diagonal matrix with (1,1,1)) has rank 3, but is not positive definite.
âÂ Federico Poloni
Sep 24 at 16:39
add a commentÂ Â
4
down vote
Wolfram Language (Mathematica), 20 bytes
0<Min@Eigenvalues@#&
Try it online!

Should 4th test case be False?
âÂ tsh
Sep 23 at 14:48 
@tsh Fixed, I am dumb!
âÂ Mr. Xcoder
Sep 23 at 14:57 
8Funny how Mathematica has a builtin for this, but its name is longer than your solution.
âÂ Federico Poloni
Sep 23 at 15:04

@FedericoPoloni: Wouldn’t a solution using NullSpace or MatrixRank be even shorter? If Null space is zero then the matrix is positive definite.
âÂ Phil H
Sep 24 at 15:41 
@PhilH No, I’m afraid that doesn’t work by itself. For instance, the second falsey example (diagonal matrix with (1,1,1)) has rank 3, but is not positive definite.
âÂ Federico Poloni
Sep 24 at 16:39
add a commentÂ Â
4
down vote
4
down vote
Wolfram Language (Mathematica), 20 bytes
0<Min@Eigenvalues@#&
Try it online!
Wolfram Language (Mathematica), 20 bytes
0<Min@Eigenvalues@#&
Try it online!

Should 4th test case be False?
âÂ tsh
Sep 23 at 14:48 
@tsh Fixed, I am dumb!
âÂ Mr. Xcoder
Sep 23 at 14:57 
8Funny how Mathematica has a builtin for this, but its name is longer than your solution.
âÂ Federico Poloni
Sep 23 at 15:04

@FedericoPoloni: Wouldn’t a solution using NullSpace or MatrixRank be even shorter? If Null space is zero then the matrix is positive definite.
âÂ Phil H
Sep 24 at 15:41 
@PhilH No, I’m afraid that doesn’t work by itself. For instance, the second falsey example (diagonal matrix with (1,1,1)) has rank 3, but is not positive definite.
âÂ Federico Poloni
Sep 24 at 16:39
add a commentÂ Â

Should 4th test case be False?
âÂ tsh
Sep 23 at 14:48 
@tsh Fixed, I am dumb!
âÂ Mr. Xcoder
Sep 23 at 14:57 
8Funny how Mathematica has a builtin for this, but its name is longer than your solution.
âÂ Federico Poloni
Sep 23 at 15:04

@FedericoPoloni: Wouldn’t a solution using NullSpace or MatrixRank be even shorter? If Null space is zero then the matrix is positive definite.
âÂ Phil H
Sep 24 at 15:41 
@PhilH No, I’m afraid that doesn’t work by itself. For instance, the second falsey example (diagonal matrix with (1,1,1)) has rank 3, but is not positive definite.
âÂ Federico Poloni
Sep 24 at 16:39
âÂ tsh
Sep 23 at 14:48
âÂ tsh
Sep 23 at 14:48
âÂ Mr. Xcoder
Sep 23 at 14:57
âÂ Mr. Xcoder
Sep 23 at 14:57
âÂ Federico Poloni
Sep 23 at 15:04
âÂ Federico Poloni
Sep 23 at 15:04
âÂ Phil H
Sep 24 at 15:41
âÂ Phil H
Sep 24 at 15:41
âÂ Federico Poloni
Sep 24 at 16:39
âÂ Federico Poloni
Sep 24 at 16:39
add a commentÂ Â
3
down vote
MATL, 4 bytes
Yv0>
Try it online!
I’ve noticed that for the [3 2 2; 2 4 0; 2 0 2]
test case, MATL calculates the 0
eigenvalue with a very small inaccuracy, computing something as low as about $10^{18}$. This therefore fails the first falsy test case due to precision issues. Thanks to Luis Mendo for pointing out that a nonempty array is truthy iff all its entries differ from 0, saving 1 byte.

1@LuisMendo Thanks, I learned something new about MATL today!
âÂ Mr. Xcoder
Sep 26 at 21:53 
My pleasure 🙂 Here’s a better explanation by Suever. I forgot to say that for complexvalued arrays only the real part is compared against zero. So
[1 2 3j]
is falsey
âÂ Luis Mendo
Sep 26 at 22:04
add a commentÂ Â
3
down vote
MATL, 4 bytes
Yv0>
Try it online!
I’ve noticed that for the [3 2 2; 2 4 0; 2 0 2]
test case, MATL calculates the 0
eigenvalue with a very small inaccuracy, computing something as low as about $10^{18}$. This therefore fails the first falsy test case due to precision issues. Thanks to Luis Mendo for pointing out that a nonempty array is truthy iff all its entries differ from 0, saving 1 byte.

1@LuisMendo Thanks, I learned something new about MATL today!
âÂ Mr. Xcoder
Sep 26 at 21:53 
My pleasure 🙂 Here’s a better explanation by Suever. I forgot to say that for complexvalued arrays only the real part is compared against zero. So
[1 2 3j]
is falsey
âÂ Luis Mendo
Sep 26 at 22:04
add a commentÂ Â
3
down vote
3
down vote
MATL, 4 bytes
Yv0>
Try it online!
I’ve noticed that for the [3 2 2; 2 4 0; 2 0 2]
test case, MATL calculates the 0
eigenvalue with a very small inaccuracy, computing something as low as about $10^{18}$. This therefore fails the first falsy test case due to precision issues. Thanks to Luis Mendo for pointing out that a nonempty array is truthy iff all its entries differ from 0, saving 1 byte.
MATL, 4 bytes
Yv0>
Try it online!
I’ve noticed that for the [3 2 2; 2 4 0; 2 0 2]
test case, MATL calculates the 0
eigenvalue with a very small inaccuracy, computing something as low as about $10^{18}$. This therefore fails the first falsy test case due to precision issues. Thanks to Luis Mendo for pointing out that a nonempty array is truthy iff all its entries differ from 0, saving 1 byte.

1@LuisMendo Thanks, I learned something new about MATL today!
âÂ Mr. Xcoder
Sep 26 at 21:53 
My pleasure 🙂 Here’s a better explanation by Suever. I forgot to say that for complexvalued arrays only the real part is compared against zero. So
[1 2 3j]
is falsey
âÂ Luis Mendo
Sep 26 at 22:04
add a commentÂ Â

1@LuisMendo Thanks, I learned something new about MATL today!
âÂ Mr. Xcoder
Sep 26 at 21:53 
My pleasure 🙂 Here’s a better explanation by Suever. I forgot to say that for complexvalued arrays only the real part is compared against zero. So
[1 2 3j]
is falsey
âÂ Luis Mendo
Sep 26 at 22:04
âÂ Mr. Xcoder
Sep 26 at 21:53
âÂ Mr. Xcoder
Sep 26 at 21:53
[1 2 3j]
is falseyâÂ Luis Mendo
Sep 26 at 22:04
[1 2 3j]
is falseyâÂ Luis Mendo
Sep 26 at 22:04
add a commentÂ Â
2
down vote
Mathematica, 29 28 bytes
AllTrue[Eigenvalues@#,#>0&]&
Definition 2.
add a commentÂ Â
2
down vote
Mathematica, 29 28 bytes
AllTrue[Eigenvalues@#,#>0&]&
Definition 2.
add a commentÂ Â
2
down vote
2
down vote
Mathematica, 29 28 bytes
AllTrue[Eigenvalues@#,#>0&]&
Definition 2.
Mathematica, 29 28 bytes
AllTrue[Eigenvalues@#,#>0&]&
Definition 2.
add a commentÂ Â
add a commentÂ Â
2
down vote
Julia 1.0, 28 bytes
using LinearAlgebra
isposdef
Try it online!
Julia 0.6, 8 bytes
isposdef
Try it online!
add a commentÂ Â
2
down vote
Julia 1.0, 28 bytes
using LinearAlgebra
isposdef
Try it online!
Julia 0.6, 8 bytes
isposdef
Try it online!
add a commentÂ Â
2
down vote
2
down vote
Julia 1.0, 28 bytes
using LinearAlgebra
isposdef
Try it online!
Julia 0.6, 8 bytes
isposdef
Try it online!
Julia 1.0, 28 bytes
using LinearAlgebra
isposdef
Try it online!
Julia 0.6, 8 bytes
isposdef
Try it online!
add a commentÂ Â
add a commentÂ Â
2
down vote
MATL, 6 bytes
It is possible to do it using even less bytes, @Mr. Xcoder managed to find a 5 byte MATL answer!
YvX<0>
Explanation
Yv compute eigenvalues
X< take the minimum
0> check whether it is greather than zero
Try it online!

Fails on the first falsy test case. See my deleted answer.
âÂ Mr. Xcoder
Sep 25 at 6:59 
1@Mr.Xcoder Oh, you even submitted an answer before me. I think you should undelete your answer as it just depends on rounding issues. (I think you can expect answers to use limited precision arithmetic – I think only the CAS languages here use exact computations.)
âÂ flawr
Sep 25 at 18:02 
Following your advice, I’ve undeleted it.
âÂ Mr. Xcoder
Sep 25 at 21:18
add a commentÂ Â
2
down vote
MATL, 6 bytes
It is possible to do it using even less bytes, @Mr. Xcoder managed to find a 5 byte MATL answer!
YvX<0>
Explanation
Yv compute eigenvalues
X< take the minimum
0> check whether it is greather than zero
Try it online!

Fails on the first falsy test case. See my deleted answer.
âÂ Mr. Xcoder
Sep 25 at 6:59 
1@Mr.Xcoder Oh, you even submitted an answer before me. I think you should undelete your answer as it just depends on rounding issues. (I think you can expect answers to use limited precision arithmetic – I think only the CAS languages here use exact computations.)
âÂ flawr
Sep 25 at 18:02 
Following your advice, I’ve undeleted it.
âÂ Mr. Xcoder
Sep 25 at 21:18
add a commentÂ Â
2
down vote
2
down vote
MATL, 6 bytes
It is possible to do it using even less bytes, @Mr. Xcoder managed to find a 5 byte MATL answer!
YvX<0>
Explanation
Yv compute eigenvalues
X< take the minimum
0> check whether it is greather than zero
Try it online!
MATL, 6 bytes
It is possible to do it using even less bytes, @Mr. Xcoder managed to find a 5 byte MATL answer!
YvX<0>
Explanation
Yv compute eigenvalues
X< take the minimum
0> check whether it is greather than zero
Try it online!

Fails on the first falsy test case. See my deleted answer.
âÂ Mr. Xcoder
Sep 25 at 6:59 
1@Mr.Xcoder Oh, you even submitted an answer before me. I think you should undelete your answer as it just depends on rounding issues. (I think you can expect answers to use limited precision arithmetic – I think only the CAS languages here use exact computations.)
âÂ flawr
Sep 25 at 18:02 
Following your advice, I’ve undeleted it.
âÂ Mr. Xcoder
Sep 25 at 21:18
add a commentÂ Â

Fails on the first falsy test case. See my deleted answer.
âÂ Mr. Xcoder
Sep 25 at 6:59 
1@Mr.Xcoder Oh, you even submitted an answer before me. I think you should undelete your answer as it just depends on rounding issues. (I think you can expect answers to use limited precision arithmetic – I think only the CAS languages here use exact computations.)
âÂ flawr
Sep 25 at 18:02 
Following your advice, I’ve undeleted it.
âÂ Mr. Xcoder
Sep 25 at 21:18
âÂ Mr. Xcoder
Sep 25 at 6:59
âÂ Mr. Xcoder
Sep 25 at 6:59
âÂ flawr
Sep 25 at 18:02
âÂ flawr
Sep 25 at 18:02
âÂ Mr. Xcoder
Sep 25 at 21:18
âÂ Mr. Xcoder
Sep 25 at 21:18
add a commentÂ Â
1
down vote
Maple, 33 bytes
(i.e. my 2 cents)
with(LinearAlgebra):
IsDefinite(A)

Hello and welcome to PPCG; I am unfamiliar with Maple, though is the newline necessary?
âÂ Jonathan Frech
Sep 24 at 16:06 
@JonathanFrech Hello and thanks. No it’s not. I didn’t count it btw.
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:09 
To me your current byte count seems to reflect the newline character.
âÂ Jonathan Frech
Sep 24 at 16:16 
@JonathanFrech Duh, my bad
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:18 
1Well … now your code and your byte count disagree.
âÂ Jonathan Frech
Sep 24 at 17:07
add a commentÂ Â
1
down vote
Maple, 33 bytes
(i.e. my 2 cents)
with(LinearAlgebra):
IsDefinite(A)

Hello and welcome to PPCG; I am unfamiliar with Maple, though is the newline necessary?
âÂ Jonathan Frech
Sep 24 at 16:06 
@JonathanFrech Hello and thanks. No it’s not. I didn’t count it btw.
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:09 
To me your current byte count seems to reflect the newline character.
âÂ Jonathan Frech
Sep 24 at 16:16 
@JonathanFrech Duh, my bad
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:18 
1Well … now your code and your byte count disagree.
âÂ Jonathan Frech
Sep 24 at 17:07
add a commentÂ Â
1
down vote
1
down vote
Maple, 33 bytes
(i.e. my 2 cents)
with(LinearAlgebra):
IsDefinite(A)
Maple, 33 bytes
(i.e. my 2 cents)
with(LinearAlgebra):
IsDefinite(A)

Hello and welcome to PPCG; I am unfamiliar with Maple, though is the newline necessary?
âÂ Jonathan Frech
Sep 24 at 16:06 
@JonathanFrech Hello and thanks. No it’s not. I didn’t count it btw.
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:09 
To me your current byte count seems to reflect the newline character.
âÂ Jonathan Frech
Sep 24 at 16:16 
@JonathanFrech Duh, my bad
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:18 
1Well … now your code and your byte count disagree.
âÂ Jonathan Frech
Sep 24 at 17:07
add a commentÂ Â

Hello and welcome to PPCG; I am unfamiliar with Maple, though is the newline necessary?
âÂ Jonathan Frech
Sep 24 at 16:06 
@JonathanFrech Hello and thanks. No it’s not. I didn’t count it btw.
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:09 
To me your current byte count seems to reflect the newline character.
âÂ Jonathan Frech
Sep 24 at 16:16 
@JonathanFrech Duh, my bad
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:18 
1Well … now your code and your byte count disagree.
âÂ Jonathan Frech
Sep 24 at 17:07
âÂ Jonathan Frech
Sep 24 at 16:06
âÂ Jonathan Frech
Sep 24 at 16:06
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:09
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:09
âÂ Jonathan Frech
Sep 24 at 16:16
âÂ Jonathan Frech
Sep 24 at 16:16
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:18
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:18
âÂ Jonathan Frech
Sep 24 at 17:07
âÂ Jonathan Frech
Sep 24 at 17:07
add a commentÂ Â
0
down vote
JavaScript (ES6), Â 99 95Â 88 bytes
Same method as nwellnhof’s answer. Returns $0$ or $1$.
f=(m,n=0,R=m[n])=>R?f(m,n+1)&R[m.map((r,y)=>y<n&&R.map((v,x)=>r[x]=v*r[n]/R[n])),n]>0:1
Try it online!
add a commentÂ Â
0
down vote
JavaScript (ES6), Â 99 95Â 88 bytes
Same method as nwellnhof’s answer. Returns $0$ or $1$.
f=(m,n=0,R=m[n])=>R?f(m,n+1)&R[m.map((r,y)=>y<n&&R.map((v,x)=>r[x]=v*r[n]/R[n])),n]>0:1
Try it online!
add a commentÂ Â
0
down vote
0
down vote
JavaScript (ES6), Â 99 95Â 88 bytes
Same method as nwellnhof’s answer. Returns $0$ or $1$.
f=(m,n=0,R=m[n])=>R?f(m,n+1)&R[m.map((r,y)=>y<n&&R.map((v,x)=>r[x]=v*r[n]/R[n])),n]>0:1
Try it online!
JavaScript (ES6), Â 99 95Â 88 bytes
Same method as nwellnhof’s answer. Returns $0$ or $1$.
f=(m,n=0,R=m[n])=>R?f(m,n+1)&R[m.map((r,y)=>y<n&&R.map((v,x)=>r[x]=v*r[n]/R[n])),n]>0:1
Try it online!
add a commentÂ Â
add a commentÂ Â
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave(‘#loginlink’);
});
Post as a guest

StackExchange.ready(
function () {
StackExchange.openid.initPostLogin(‘.newpostlogin’, ‘https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f172677%2fisthematrixpositivedefinite%23newanswer’, ‘question_page’);
}
);
Post as a guest

Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave(‘#loginlink’);
});
Post as a guest

Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave(‘#loginlink’);
});
Post as a guest

Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave(‘#loginlink’);
});
Post as a guest



âÂ SEJPM
Sep 23 at 11:48
âÂ Shaggy
Sep 23 at 15:53
âÂ W W
Sep 23 at 16:37
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 15:55
âÂ polfosol Ã Â°Â _Ã Â°Â
Sep 24 at 16:11