Кватернионы в CLAPACK или альтернативная библиотека кватернионов в стиле C.

#c #linear-algebra #quaternions

#c #линейная алгебра #кватернионы

Вопрос:

Я переношу набор пространственных вычислений во встроенную среду, которая по существу компилирует и запускает код C.

Я заменил ряд функций линейной алгебры, которые ранее использовали VNL (шаблонную библиотеку C , которая не будет работать на новой платформе), на CBLAS и CLAPACK. Их API (все параметры являются указателями, никаких шаблонов) идеально подходит для того, что я делаю.

Однако проблема в том, что я нигде не вижу функций на основе кватернионов в руководстве пользователя CLAPACK. Я пропустил раздел, и где-то есть поддержка кватернионов? Если да, пожалуйста, укажите мне на функции. В частности, я ищу обратное, умножение и преобразование в и из углов Эйлера и матриц 3×3.

Если в CLAPACK нет такой поддержки, существует ли другая библиотека с аналогичными характеристиками дизайна, которая выполняет математику кватернионов?

Комментарии:

1. нельзя ли интерпретировать кватернион как матрицу 4×4?

2. Да, и преобразование существующего кода в матрицы вращения может быть возможным, но не является предпочтительным. Во-первых, один из наших внешних входов передает кватернионы в наш API, поэтому должен быть некоторый уровень поддержки и преобразования. Во-вторых, я считаю, что при вращательных вычислениях при использовании кватернионов над вращательными матрицами есть преимущества в размере хранилища и производительности. Вот дополнительная информация, en.wikipedia.org/wiki /.

3. На самом деле это не ответ, но разве вы не можете придумать это самостоятельно и представить его через API, подобный BLAS / LAPACK. Эти несколько функций (алгебра кватернионов, преобразование векторов, преобразование в другие представления) не должны быть такими сложными или утомительными для реализации. Я предполагаю, что это не в LAPACK, поскольку это представляет интерес только для небольшой группы людей (механиков и графических специалистов, может быть, некоторых врачей или физиков?), И на самом деле это не относится к классической линейной алгебре, не говоря уже о числовой линейной алгебре, я думаю.

4. Спасибо, Кристиан, на самом деле я собираюсь сделать это прямо сейчас. Я на самом деле рассматриваю возможность использования функций в VNL в качестве отправной точки и замены любой математики VNL вызовами CLAPACK.

Ответ №1:

Этот PDF-файл, похоже, указывает на то, что поддержка кватернионов не планировалась в LAPACK. Я полагаю, можно с уверенностью предположить, что КЛАПАК будет таким же.

http://www.netlib.org/lapack/lawnspdf/lawn106.pdf

Я до сих пор не нашел замену или дополнительную библиотеку, которая поддерживает кватернионы.

Редактировать:

Найден CQRLib, библиотека кватернионов ANSI C. Он выделяет переменные в стек (проблема в моей архитектуре), поэтому мне придется его реорганизовать. Но в остальном, похоже, это должно сработать.

http://cqrlib.sourceforge.net/

Комментарии:

1. CQRLib, похоже, покрывает то, что мне нужно. Я повторно выберу чужой ответ, если будет добавлена новая информация, но на данный момент использование CLAPACK для всей линейной алгебры, кроме кватернионов, и добавление в CQR для покрытия этого пробела является моим решением.