1 from . import contract
5 '''
6 INCOMPLETE -- The Grassman manifold Grass(n,p) is the set of rank-p
7 subspaces in R^n. It is seen here as Grass(n,p) = ST(n,p)/GL_p.
8
9 For a reference, see the paper by Absil, Mahony, and Sepulchre (2004)
10 where all these operations are explained. Also their book should
11 contain essentially the same info, but with more background.
12
13 '''
14 @contract(n='N,N>0', p='P,P>0,P<=N')
15 def __init__(self, p, n):
16 '''
17 Initializes the manifold structure.
18
19 :param n: dimension of space
20 :param p: rank of subspace
21 '''
22 self.n = n
23 self.p = p
24
25 def belongs(self, a):
26 assert False
27
28 def distance(self, a, b):
29 assert False
30
31 def logmap(self, a, b):
32 assert False
33
34 def expmap(self, a, vel):
35 assert False
36
37 def project_ts(self, base, vx):
38 assert False
39
40 def sample_uniform(self):
41 assert False
42
43 def normalize(self, x):
44 assert False
45