/usr/share/axiom-20170501/src/algebra/POINT.spad is in axiom-source 20170501-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | )abbrev domain POINT Point
++ Author: Mark Botch
++ Description:
++ This domain implements points in coordinate space
Point(R) : SIG == CODE where
R : Ring
-- Domains for points, subspaces and properties of components in
-- a subspace
SIG ==> PointCategory(R)
CODE ==> Vector (R) add
PI ==> PositiveInteger
point(l:List R):% ==
pt := new(#l,R)
for x in l for i in minIndex(pt).. repeat
pt.i := x
pt
dimension p == (# p)::PI -- Vector returns NonNegativeInteger...?
convert(l:List R):% == point(l)
cross(p0, p1) ==
#p0 ^=3 or #p1^=3 => error "Arguments to cross must be three dimensional"
point [p0.2 * p1.3 - p1.2 * p0.3, _
p1.1 * p0.3 - p0.1 * p1.3, _
p0.1 * p1.2 - p1.1 * p0.2]
extend(p,l) == concat(p,point l)
|