# fixed point taylor sine/cosine approximation model

2 views (last 30 days)

Show older comments

Can anybody share sine/cosine taylor approx model which is compatible with hdl coder?

##### 2 Comments

Walter Roberson
on 19 Jun 2022

is there a reason why you are not using https://www.mathworks.com/help/fixedpoint/ref/cordicsin.html

### Answers (2)

Sulaymon Eshkabilov
on 19 Jun 2022

WHy not to use matlab's built-in taylor() expansion fcn: https://www.mathworks.com/help/symbolic/sym.taylor.html?s_tid=doc_ta

E.g.:

syms x

taylor(sin(x), x, pi)

taylor(cos(x), x, pi/2)

##### 20 Comments

Walter Roberson
on 22 Jun 2022

You need order 22 (x^21) to have an error of less than 1/1000

syms x

f = sin(x);

target = 1/1000;

for order = 2:50

t = taylor(f, x, 0, 'order', order);

val_at_end = subs(t, x, 2*pi);

if abs(val_at_end) < target; break; end

end

order

t

fplot([t, f], [0 2*pi])

fplot(t-f, [0 2*pi])

Kiran Kintali
on 4 Jul 2022

HDL Coder supports code generation for single precision trigonometric functions.

Getting Started with HDL Coder Native Floating-Point Support

Taylor series approximation using HDL Coder

If you want to build Taylor series approximation by youself you could build using basic Math operations and sufficient amount of fixed-point conversion.

syms x

f = sin(x);

T2sin = taylor(f, x, 'Order', 2); % T2sin = x

T4sin = taylor(f, x, 'Order', 4); % T4sin = -x^3/6 + x

T6sin = taylor(f, x, 'Order', 6); % T6sin = x^5/120 - x^3/6 + x

On you build such a model you can further use optimizations such as multiplier partitioning, resource sharing and pipelining options to optimize the model for area/performance/latency/power.

##### 2 Comments

Walter Roberson
on 4 Jul 2022

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!