Definition at line 1272 of file matrix.cpp.
1273{
1279
1281
1282 if (
p < 0 || q < 0 || p + q > F->
rank())
return mat.to_matrix();
1283
1284 if (
p == 0 || q == 0)
1285 {
1286 for (
int i = 0; i <
G->rank(); i++) mat.set_entry(i, i, R->
one());
1287 return mat.to_matrix();
1288 }
1289
1290 Subsets C(F->
rank(),
p + q);
1294 int col = 0;
1295
1296 for (
int i = 0; i < Fp->
rank(); i++)
1297 {
1298 C.decode(i, a);
1299 for (
int j = 0; j < Fq->
rank(); j++)
1300 {
1301 C.decode(j, b);
1303 if (sgn == 0)
1304 {
1305 col++;
1306 continue;
1307 }
1309 int row = static_cast<int>(C.encode(c));
1310 mat.set_entry(row, col++, r);
1311 }
1312 }
1313 return mat.to_matrix();
1314}
FreeModule * tensor(const FreeModule *G) const
const Ring * get_ring() const
FreeModule * exterior(int p) const
friend class MatrixConstructor
virtual ring_elem from_long(long n) const =0
static int concatenateSubsets(const Subset &s, const Subset &t, Subset &result)
std::vector< size_t > Subset
int sgn(const mpreal &op)
References Subsets::concatenateSubsets(), Subsets::decode(), Subsets::encode(), FreeModule::exterior(), FreeModule, Ring::from_long(), G, FreeModule::get_ring(), Matrix(), MatrixConstructor, Ring::one(), p, FreeModule::rank(), MatrixConstructor::set_entry(), FreeModule::tensor(), MatrixConstructor::to_matrix(), and wedge_product().
Referenced by wedge_product().