Каким образом лезвия геометрической алгебры могут быть реализованы в c? - PullRequest
0 голосов
/ 27 сентября 2018

K-клинок в n-мерном пространстве имеет (n \ выбирать k) базисов.Например: пусть k = 3, n = 5, тогда наш 3-блейд в 5-пространстве может быть реализован как:

typedef long double real_t;

typedef struct blade_5d_3_t_
{
    real_t e1e2e3; /* 1 */
    real_t e1e2e4; /* 2 */
    real_t e1e2e5; /* 3 */
    real_t e1e3e4; /* 4 */
    real_t e1e3e5; /* 5 */
    real_t e1e4e5; /* 6 */
    real_t e2e3e4; /* 7 */
    real_t e2e3e5; /* 8 */
    real_t e2e4e4; /* 9 */
    real_t e3e4e5; /* 10 = 5 choose 3 */
}
blade_5d_3_t;

Этот тип blade_5d_3_t означает 3-блейд в 5-пространстве.Мы можем реализовать blade_nd_k_t таким же образом.

Если нужно реализовать все (k, n) блейдов для 0 <= n <= 5 и k <= n, то (5 + 1) *Необходимо реализовать 5/2 типов различных блэйдов. </p>

Теперь я хочу реализовать свои структуры блэйдов для некоторого большого n, а затем определить функции в пространстве блэйдов.

Возможно лидостичь своей цели элегантно в с?

...