Code covered by the BSD License  

Highlights from
Cos and Sin via CORDIC

from Cos and Sin via CORDIC by Luis Moreno
Calculation of trigonometrical functions (cos,sin) via CORDIC

[cos1 sin1]=cossincordic(zo);
function [cos1 sin1]=cossincordic(zo);
%Calculation of cos(theta) and sen(theta)
%by CORDIC algorithm
%Programmer: Ing. Luis Moreno Yaguana
% UTPL-GESE 
% ISTEC-RedDSP
% zo an angle in deg mode. The value of this angle must be between
% 0 and 360 degrees
%[cos1 sin1]=cossincordic(30)
%%
if zo<0
    zo=-zo;
end
if zo>90 && zo<180
    zo=zo-90;
    sc=-1;
    ss=1;
elseif zo>180 && zo<270
    zo=zo-180;
    sc=-1;
    ss=-1;
elseif zo>270 && zo<360
    zo=zo-270;
    sc=1;
    ss=-1;
else
    sc=1;
    ss=1;
end
n=9; %Number of iterations
%% Look up table
lutai=[45.00000 
       26.56505
       14.03624
        7.12501
        3.57633
        1.78991
        0.89517
        0.44761
        0.22381];
%% Initialization of variables
xo=.6072;    % xo=C
yo=0;        % yo=0
ao=sign(zo); %Checking sign of zo
%% Iteration Zero
x=xo-yo*ao*(2^-(0));
y=yo+xo*ao*(2^-(0));
z=zo-ao*lutai(1); %Carga de primer valor de angulo
zo=z;  % zo update
xo=x;  % xo update
yo=y;  % yo update
if zo>=0  %Checking sign of zo
    ai=+1;
 else
    ai=-1;
end
%% n- Iteraciones
    for i=1:n-1
      x=xo-yo*ai*(2^-(i));
      y=yo+xo*ai*(2^-(i));
      z=zo-ai*lutai(i+1);
      if z>=0  %Checking sign of z
         ai=+1;
      else
         ai=-1;
      end
      zo=z;      %zo update
      xo=x;      %xo update
      yo=y;      %yo update
    end
%% Values
if sc==1 && ss==1
    cos1=sc*x;% Cos
    sin1=ss*y;  % Sin
elseif sc==-1 && ss==1
    cos1=sc*y;% Cos
    sin1=ss*x;  % Sin
elseif sc==-1 && ss==-1
    cos1=sc*x;% Cos
    sin1=ss*y;  % Sin
elseif sc==1 && ss==-1
    cos1=sc*y;% Cos
    sin1=ss*x;  % Sin
end
%% References
% - Jack E. Volder
%   The CORDIC Trigonometric Computing Technique
%   IRE Transcactions EC-8, 1959, 330-334
%   
% - Amaya Ferney*,Velasco Jaime :Diseo de la tangente inversa usando el
% algoritmo CORDIC
% 
%   Grupo de Bionanoelectronica, Escuela EIEE, Universidad del Valle, Cali, Colombia
%   *Grupo de Automtica y Robotica, GAR, Universidad Javeriana, Cali, Colombia
%   E-mail: foamaya@puj.edu.co, jvelasco@univalle.edu.co         

Contact us at files@mathworks.com