Math docs, add spacing to binstr_to_int

This commit is contained in:
Evan Burkey 2023-07-12 11:45:30 -07:00
parent a029765cf4
commit db44dc5a31
11 changed files with 79 additions and 12 deletions

View File

@ -22,6 +22,10 @@ endif()
if(${CMAKE_PROJECT_NAME} STREQUAL flint)
add_executable(tests tests/tests.c)
target_include_directories(tests PRIVATE include)
target_link_libraries(tests flint bsd)
endif()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
target_link_libraries(tests flint)
else()
target_link_libraries(tests flint bsd)
endif()
endif()

View File

@ -1,4 +1,4 @@
# lfbinarytree
# binarytree
Binary tree with standard leaf operations

View File

@ -1,4 +1,4 @@
# lfbool
# bool
Macro representation of truthy values

View File

@ -1,4 +1,4 @@
# lfinput
# input
I/O module to assist with consuming data from files

View File

@ -1,4 +1,4 @@
# lflinkedlist
# linkedlist
A dual sided linked list structure. Used as the foundation for many of the structures in `libflint`

View File

@ -1,3 +1,59 @@
# lfmath
# math
Coming soon
General math functions
## Functions
## max_int
Return the maximum integer between `int a` and `int b`
```c
int max_int(int a, int b);
```
## min_int
Return the minimum integer between `int a` and `int b`
```c
int min_int(int a, int b);
```
## clamp_int
Clamps an integer between a high and low value
```c
int clamp_int(int i, int low, int high);
```
## binstr_to_int
Converts a string representing a binary number into an integer. Supports underscores as spacing
```c
int binstr_to_int(const char *s);
/* Usage */
int a = binstr_to_int("10011101");
int b = binstr_to_int("1001_1101_0010_1011");
```
## bresenham
Uses bresenham's line algorithim to generate a line in 2D space.
Returns a pointer to an array of `Point`.
The `sz` parameter holds the size of the array.
```c
Point *bresenham(int x0, int y0, int x1, int y1, size_t *sz);
```
## bresenham_p
Works the same as `bresenham()` but uses the `Point` struct instead of `int`
```c
Point *bresenham_p(Point p1, Point p2, size_t *sz);
```

View File

@ -1,3 +1,3 @@
# lfset
# set
Coming soon

View File

@ -1,3 +1,3 @@
# lfstack
# stack
Coming soon

View File

@ -1,4 +1,4 @@
# lfutility
# utility
Utility code that does not fit anywhere else

View File

@ -29,6 +29,9 @@ int clamp_int(int i, int low, int high) {
int binstr_to_int(const char *s) {
int n = 0, m = 1;
for (int i = (int) strlen(s) - 1; i >= 0; --i) {
if (s[i] == '_') {
continue;
}
if (s[i] == '1') {
n += m;
}

View File

@ -161,10 +161,14 @@ void test_math() {
printf("Between %d and %d, %d is larger\n", i, j, max_int(i, j));
printf("Between %d and %d, %d is smaller\n", i, j, min_int(i, j));
char *s = "1010110";
char *s = "10101101";
printf("Binary: %s\n", s);
printf("Decimal: %d\n", binstr_to_int(s));
char *s2 = "1010_1101";
printf("Binary: %s\n", s2);
printf("Decimal: %d\n", binstr_to_int(s2));
printf("\nGenerate line from 0,0 to 2,5\n");
size_t sz = 0;
Point *line = bresenham(0, 0, 2, 5, &sz);