Post Reply 
Optimized Stack Operations
03-03-2019, 08:25 AM
Post: #27
RE: Optimized Stack Operations
I like CORDIC - but I can't bring the horsepowers to the ground.

So far I avoided doubles and multiplications and used long variables (shifting values with 1E6):

Code:

#define CSTEPS 20 // Cordic steps
#define CMULT 1e6 // To convert long to double - 6 digit precision
long const ai[CSTEPS] = { // Cordic A-values (atan(2^-m)) in degrees - 6 digit precision
  45000000,
  26565051,
  14036243,
  7125016,
  3576334,
  1789911,
  895174,
  447614,
  223811,
  111906,
  55953,
  27976,
  13988,
  6994,
  3497,
  1749,
  874,
  437,
  219,
  109
};
static double _cordic(double f) { // Calculate sin
  byte m = 0;
  long a = ai[0];
  long z = f * CMULT;
  long c = 607253, s = 0;
  for (byte i = 1; i < CSTEPS; i++) {
    long ctmp = c;
    if (z >= 0) {
      c -= s >> m;
      s += ctmp >> m;
      z = z - a;
    }
    else {
      c += s >> m;
      s -= ctmp >> m;
      z +=  a;
    }
    a = ai[i];
    m++;
  }
  return (s / CMULT);
}

But finally my compiler claims almost 500 bytes. It seems to me that avoiding doubles and bit shifting (instead of divisions) even bloats the memsize.
And involving the intrinsic function for sin(x) needs approx. 250 bytes.
My combined function for _exp_sin_asin uses roughly 600 bytes.
???
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
Optimized Stack Operations - deetee - 02-25-2019, 06:35 AM
RE: Optimized Stack Operations - ijabbott - 02-25-2019, 07:57 AM
RE: Optimized Stack Operations - grsbanks - 02-25-2019, 08:03 AM
RE: Optimized Stack Operations - deetee - 02-25-2019, 08:42 AM
RE: Optimized Stack Operations - deetee - 02-25-2019, 09:04 AM
RE: Optimized Stack Operations - grsbanks - 02-25-2019, 09:14 AM
RE: Optimized Stack Operations - deetee - 02-25-2019, 09:45 AM
RE: Optimized Stack Operations - grsbanks - 02-25-2019, 09:50 AM
RE: Optimized Stack Operations - deetee - 02-25-2019, 09:57 AM
RE: Optimized Stack Operations - grsbanks - 02-25-2019, 10:00 AM
RE: Optimized Stack Operations - grsbanks - 02-25-2019, 10:09 AM
RE: Optimized Stack Operations - Leviset - 02-25-2019, 12:37 PM
RE: Optimized Stack Operations - deetee - 02-26-2019, 06:57 AM
RE: Optimized Stack Operations - rprosperi - 02-25-2019, 08:04 PM
RE: Optimized Stack Operations - rprosperi - 02-25-2019, 09:49 PM
RE: Optimized Stack Operations - deetee - 02-26-2019, 10:40 AM
RE: Optimized Stack Operations - Paul Dale - 02-26-2019, 10:52 AM
RE: Optimized Stack Operations - deetee - 02-26-2019, 03:00 PM
RE: Optimized Stack Operations - deetee - 02-27-2019, 11:04 AM
RE: Optimized Stack Operations - grsbanks - 02-27-2019, 11:13 AM
RE: Optimized Stack Operations - deetee - 03-03-2019 08:25 AM
RE: Optimized Stack Operations - Paul Dale - 03-03-2019, 08:32 AM
RE: Optimized Stack Operations - deetee - 03-05-2019, 08:36 AM



User(s) browsing this thread: 1 Guest(s)