`float`

¶Single precision floating point numbers can accurately store real number until 7.2 decimals and only consume 4 bytes (32-bits) of memory, see Numeric data types. Since astronomical data rarely reach that level of precision, single precision floating points are the type of choice to keep and read data. However, when processing the data, it is best to use double precision floating points (since errors propagate).

- Type (C
`struct`

):**gal_list_f32_t**¶ A single node in a list containing a 32-bit single precision

`float`

value: see Numeric data types.typedef struct gal_list_f32_t { float v; struct gal_list_f32_t *next; } gal_list_f32_t;

- Function:

`void`

**gal_list_f32_add**`(gal_list_f32_t`

¶`**list`

, float`value`

) Add a new node (containing

`value`

) to the top of the`list`

of`float`

s and update`list`

. Here is one short example of initializing and adding elements to a string list:gal_list_f32_t *list=NULL; gal_list_f32_add(&list, 3.89); gal_list_f32_add(&list, 1.23e-20);

- Function:

`float`

**gal_list_f32_pop**`(gal_list_f32_t`

¶`**list`

) Pop the top element of

`list`

and return the value. This function will also change`list`

to point to the next node in the list. If`*list==NULL`

, then this function will return`GAL_BLANK_FLOAT32`

(NaN, see Library blank values (`blank.h`)).

- Function:

`size_t`

**gal_list_f32_number**`(gal_list_f32_t`

¶`*list`

) Return the number of nodes in

`list`

.

- Function:

`size_t`

**gal_list_f32_last**`(gal_list_f32_t`

¶`*list`

) Return a pointer to the last node in

`list`

.

- Function:

`void`

**gal_list_f32_print**`(gal_list_f32_t`

¶`*list`

) Print the values within each node of

`*list`

on the standard output in the same order that they are stored. Each floating point number is printed on one line. This function is mainly good for checking/debugging your program. For program outputs, it is best to make your own implementation with a better, more user-friendly format. For example, in the following code snippet. You can also modify it to print all values in one line, etc., depending on the context of your program.size_t i=0; gal_list_f32_t *tmp; for(tmp=list; tmp!=NULL; tmp=tmp->next) printf("Number %zu: %f\n", ++i, tmp->v);

- Function:

`void`

**gal_list_f32_reverse**`(gal_list_f32_t`

¶`**list`

) Reverse the order of the list such that the top node in the list before calling this function becomes the bottom node after it.

- Function:

`float *`

**gal_list_f32_to_array**`(gal_list_f32_t`

¶`*list`

, int`reverse`

, size_t`*num`

) Dynamically allocate an array and fill it with the values in

`list`

. The function will return a pointer to the allocated array and put the number of elements in the array into the`num`

pointer. If`reverse`

has a non-zero value, the array will be filled in the inverse of the order of elements in`list`

. This function can be useful after you have finished reading an initially unknown number of values and want to put them in an array for easy random access.

- Function:

`void`

**gal_list_f32_free**`(gal_list_f32_t`

¶`*list`

) Free every node in

`list`

.

GNU Astronomy Utilities 0.23 manual, July 2024.