Hi,

I want to use ginac to evaluate some complex expressions that evolve some vector algebra. However, have some trouble working with the matrix class. I have 2 questions:

    1: Am I correct, that if i want to compute the Subtraction of two vectors I should use the indexed variant?

    2: How do I access elements of an expression?

I have included a small file that illustrates my problem?


Kind regards,

Spooky

#include <ginac/ginac.h>
#include <iostream>
int main(int argc, char **argv) {
    using namespace GiNaC;
    idx d(symbol("d"), 3);

    matrix m0 = matrix({{0, 0, 0}}), m1 = matrix({{1, 0, 0}});
    indexed v0 = indexed(m0,d), v1 = indexed(m1,d);

    // This seems wrong:
    std::cout << (m1-m0).eval() << std::endl;
    // ->  [[1,0,0]]-[[0,0,0]]

    // This seems right:
    std::cout << (v1-v0).simplify_indexed()<< std::endl;
    // ->  [[1,0,0]].d

    // I can normally access matrix element using
    std::cout << m1(0,0) << std::endl;
    // -> 0

    // But how can I access matrix elements of an expression?
    // does not compile:
    // std::cout << "(v1-v0)(0,0): " << (v1-v0)(0,0) << std::end;
    return 0;
}