ECE 2036 Project
Dependencies: mbed wave_player 4DGL-uLCD-SE
math_extra.cpp@0:cf4396614a79, 2017-11-03 (annotated)
- Committer:
- rconnorlawson
- Date:
- Fri Nov 03 18:48:48 2017 +0000
- Revision:
- 0:cf4396614a79
Emptied shell code (including doubly linked list) and added comments for all the functionality.;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rconnorlawson | 0:cf4396614a79 | 1 | #include "math_extra.h" |
rconnorlawson | 0:cf4396614a79 | 2 | #include <stdint.h> |
rconnorlawson | 0:cf4396614a79 | 3 | |
rconnorlawson | 0:cf4396614a79 | 4 | int in_range(int x, int lower, int upper) |
rconnorlawson | 0:cf4396614a79 | 5 | { |
rconnorlawson | 0:cf4396614a79 | 6 | return (x > lower && x < upper); |
rconnorlawson | 0:cf4396614a79 | 7 | } |
rconnorlawson | 0:cf4396614a79 | 8 | |
rconnorlawson | 0:cf4396614a79 | 9 | float clamp(float x, float limit) |
rconnorlawson | 0:cf4396614a79 | 10 | { |
rconnorlawson | 0:cf4396614a79 | 11 | x = (x > limit) ? limit : x; |
rconnorlawson | 0:cf4396614a79 | 12 | x = (x < -limit) ? -limit : x; |
rconnorlawson | 0:cf4396614a79 | 13 | return x; |
rconnorlawson | 0:cf4396614a79 | 14 | } |
rconnorlawson | 0:cf4396614a79 | 15 | |
rconnorlawson | 0:cf4396614a79 | 16 | int sgn(float x) |
rconnorlawson | 0:cf4396614a79 | 17 | { |
rconnorlawson | 0:cf4396614a79 | 18 | return (x > 0.0) - (x < 0.0); |
rconnorlawson | 0:cf4396614a79 | 19 | } |
rconnorlawson | 0:cf4396614a79 | 20 | |
rconnorlawson | 0:cf4396614a79 | 21 | float coin_flip() |
rconnorlawson | 0:cf4396614a79 | 22 | { |
rconnorlawson | 0:cf4396614a79 | 23 | // Compute psuedorandom numbers! Don't worry about how this works. |
rconnorlawson | 0:cf4396614a79 | 24 | // If you really must know, search for "Linear-feedback shift register" |
rconnorlawson | 0:cf4396614a79 | 25 | static uint16_t rand = 0xA1B2; |
rconnorlawson | 0:cf4396614a79 | 26 | uint16_t bit = ((rand >> 0) ^ (rand >> 2) ^ (rand >> 3) ^ (rand >> 5) ) & 1; |
rconnorlawson | 0:cf4396614a79 | 27 | rand = (rand >> 1) | (bit << 15); |
rconnorlawson | 0:cf4396614a79 | 28 | return (rand & 1) ? 1.0 : -1.0; |
rconnorlawson | 0:cf4396614a79 | 29 | } |