** Edited **

I tried changing the mentioned Jacobi algorithm to fixed point using libfixmath but I am not getting right results. What did I miss??

edited Jacobi code
makefile
**************************** Fisrt post ********************************************

C newbie here. I somehow got my self in the deep and i cant find my way out. If you could help that would be awesome!

The situation: I am trying to implement an ICA algorithm in C. I did so using floating point arithmetic (double, float). Now I want this code to transform it to fixed point so I can import it on an ARM microcontroller of 32 bits (thats why i cant use double, float etc).

I have found four libraries that I think can help me:

http://sourceforge.net/projects/avrfix/files/

http://www.dsprelated.com/showcode/40.php

http://sourceforge.net/p/fixedptc/code/ci/default/tree/

libfixmath

I didnt use 1. 2. or 3. I am currently trying libfixmath because allmost all calculations are done with matrices.

My problem is when trying to find the eigenvalues and eigenvectors of a covariance matrix (positive symmetic 3x3 matrix). I searched around for libs or functions that do eigendecomposition or SVD etc. but i didnt find anything.

How to you do that sort of calculation in fixed point?? Are there any functions/libs that i didnt find out? Do I have to alter the eigen function that I have in floating-point (line by line converting to fixed point - i.e fix16_from_dbl() )?

My current eigen function (not mine of course i think it is from Numerical Recipes)

jacobi.h
****Is my first question if there is anything to correct in my question please say so... :)

** Edited **

libfixmath does

Cholesky,

wiki and QR decomposition.

I tried to play with maths and produce the eigenvectors or eigenvalue of a matrix with this data (data from the above functions) but I failed.

If anyone knows how to do that then problem solved.

I used it for other purposes, but there are many functions relating to matrices.

cantake fixed point values and make calculation with them. RIGHT?For the example function below for ccEigenVV does it accepts type (CV_32FC) int 32 bits??

(even if it does, isnt the return result being wrong because CV_32FC type in OpenCV is integer only not fixed (i.e Q16.16)) --> or am i saying rubbish?

1) http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#eigen

2) http://docs.opencv.org/modules/core/doc/old_basic_structures.html#cvarr

3) http://docs.opencv.org/modules/core/doc/basic_structures.html#mat

Thank you!

When I managed to find a way to implement what i want i will watch out for overflows too :)