Большое переименование

This commit is contained in:
Andrey Pokidov 2024-11-20 16:53:12 +07:00
parent e354b2425c
commit e7616ae80c
30 changed files with 1356 additions and 1348 deletions

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
<FileVersion major="1" minor="0" />
<ActiveTarget name="Debug" />
<ActiveTarget name="Release" />
<File name="main.c" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3793" topLine="116" />

View file

@ -9,36 +9,36 @@
#include <time.h>
#endif // _WINDOWS_
SPVersor * allocate_versors(const unsigned int amount)
BgFP32Versor * allocate_versors(const unsigned int amount)
{
return calloc(amount, sizeof(SPVersor));
return calloc(amount, sizeof(BgFP32Versor));
}
SPVersor * make_zero_versors(const unsigned int amount)
BgFP32Versor * make_zero_versors(const unsigned int amount)
{
SPVersor * list = allocate_versors(amount);
BgFP32Versor * list = allocate_versors(amount);
if (list == 0) {
return 0;
}
for (unsigned int i = 0; i < amount; i++) {
sp_versor_reset(&list[i]);
bg_fp32_versor_reset(&list[i]);
}
return list;
}
SPVersor * make_random_versors(const unsigned int amount)
BgFP32Versor * make_random_versors(const unsigned int amount)
{
SPVersor * list = allocate_versors(amount);
BgFP32Versor * list = allocate_versors(amount);
if (list == 0) {
return 0;
}
for (unsigned int i = 0; i < amount; i++) {
sp_versor_set(
bg_fp32_versor_set_values(
(2.0f * rand()) / RAND_MAX - 1.0f,
(2.0f * rand()) / RAND_MAX - 1.0f,
(2.0f * rand()) / RAND_MAX - 1.0f,
@ -50,14 +50,14 @@ SPVersor * make_random_versors(const unsigned int amount)
return list;
}
void print_versor(const SPVersor* versor)
void print_versor(const BgFP32Versor* versor)
{
printf("(%f, %f, %f, %f)\n", versor->_s0, versor->_x1, versor->_x2, versor->_x3);
}
void print_vector(const SPVector3* vector)
void print_vector(const BgFP32Vector3* vector)
{
printf("(%f, %f, %f) / %f\n", vector->x1, vector->x2, vector->x3, sp_vector3_get_module(vector));
printf("(%f, %f, %f) / %f\n", vector->x1, vector->x2, vector->x3, bg_fp32_vector3_get_module(vector));
}
/*
int main()
@ -74,17 +74,17 @@ int main()
srand((unsigned int)(now.tv_nsec & 0xfffffff));
#endif // _WIN64
SPVersor * versors = make_random_versors(amount);
BgFP32Versor * versors = make_random_versors(amount);
if (versors == 0) {
printf("Cannot allocate memory for versors");
return 0;
}
SPVector3 initial, result;
BgFP32Vector3 initial, result;
sp_vector3_set_values(1, 2, 3, &initial);
sp_vector3_copy(&initial, &result);
bg_fp32_vector3_set_values(1, 2, 3, &initial);
bg_fp32_vector3_copy(&initial, &result);
#ifdef _WIN64
ULONGLONG start, end;
@ -94,11 +94,11 @@ int main()
clock_gettime(CLOCK_REALTIME, &start);
#endif // _WIN64
for (unsigned int i = 0; i < amount; i++) {
sp_versor_turn2(&versors[i], &result, &result);
bg_fp32_versor_turn2(&versors[i], &result, &result);
}
for (unsigned int i = amount; i > 0; i--) {
sp_versor_turn_back2(&versors[i - 1], &result, &result);
bg_fp32_versor_turn_back2(&versors[i - 1], &result, &result);
}
#ifdef _WIN64
@ -135,14 +135,14 @@ int main()
srand((unsigned int)(now.tv_nsec & 0xfffffff));
#endif // _WIN64
SPVersor * versors1 = make_random_versors(amount);
BgFP32Versor * versors1 = make_random_versors(amount);
if (versors1 == 0) {
printf("Cannot allocate memory for versors1");
return 0;
}
SPVersor * versors2 = make_random_versors(amount);
BgFP32Versor * versors2 = make_random_versors(amount);
if (versors2 == 0) {
printf("Cannot allocate memory for versors2");
@ -150,7 +150,7 @@ int main()
return 0;
}
SPVersor * results = make_zero_versors(amount);
BgFP32Versor * results = make_zero_versors(amount);
if (results == 0) {
printf("Cannot allocate memory for results");
@ -168,7 +168,7 @@ int main()
#endif // _WIN64
for (int j = 0; j < 1000; j++) {
for (unsigned int i = 0; i < amount; i++) {
sp_versor_combine(&versors1[i], &versors2[i], &results[i]);
bg_fp32_versor_combine(&versors1[i], &versors2[i], &results[i]);
}
}

View file

@ -4,34 +4,34 @@
#include <math.h>
#include "basis.h"
#define SP_PI 3.1415926536f
#define SP_TWO_PI 6.2831853072f
#define SP_HALF_OF_PI 1.5707963268f
#define SP_THIRD_OF_PI 1.0471975512f
#define SP_FOURTH_OF_PI 0.7853981634f
#define SP_SIXTH_OF_PI 0.5235987756f
#define BG_FP32_PI 3.1415926536f
#define BG_FP32_TWO_PI 6.2831853072f
#define BG_FP32_HALF_OF_PI 1.5707963268f
#define BG_FP32_THIRD_OF_PI 1.0471975512f
#define BG_FP32_FOURTH_OF_PI 0.7853981634f
#define BG_FP32_SIXTH_OF_PI 0.5235987756f
#define SP_DEGREES_IN_RADIAN 57.295779513f
#define SP_TURNS_IN_RADIAN 0.1591549431f
#define SP_RADIANS_IN_DEGREE 1.745329252E-2f
#define SP_TURNS_IN_DEGREE 2.7777777778E-3f
#define BG_FP32_DEGREES_IN_RADIAN 57.295779513f
#define BG_FP32_TURNS_IN_RADIAN 0.1591549431f
#define BG_FP32_RADIANS_IN_DEGREE 1.745329252E-2f
#define BG_FP32_TURNS_IN_DEGREE 2.7777777778E-3f
#define DP_PI 3.14159265358979324
#define DP_TWO_PI 6.28318530717958648
#define DP_HALF_OF_PI 1.57079632679489662
#define DP_THIRD_OF_PI 1.04719755119659775
#define DP_FOURTH_OF_PI 0.78539816339744831
#define DP_SIXTH_OF_PI 0.523598775598298873
#define BG_FP64_PI 3.14159265358979324
#define BG_FP64_TWO_PI 6.28318530717958648
#define BG_FP64_HALF_OF_PI 1.57079632679489662
#define BG_FP64_THIRD_OF_PI 1.04719755119659775
#define BG_FP64_FOURTH_OF_PI 0.78539816339744831
#define BG_FP64_SIXTH_OF_PI 0.523598775598298873
#define DP_DEGREES_IN_RADIAN 57.2957795130823209
#define DP_TURNS_IN_RADIAN 0.159154943091895336
#define DP_RADIANS_IN_DEGREE 1.74532925199432958E-2
#define DP_TURNS_IN_DEGREE 2.77777777777777778E-3
#define BG_FP64_DEGREES_IN_RADIAN 57.2957795130823209
#define BG_FP64_TURNS_IN_RADIAN 0.159154943091895336
#define BG_FP64_RADIANS_IN_DEGREE 1.74532925199432958E-2
#define BG_FP64_TURNS_IN_DEGREE 2.77777777777777778E-3
typedef enum {
ANGLE_UNIT_RADIANS = 1,
ANGLE_UNIT_DEGREES = 2,
ANGLE_UNIT_TURNS = 3
BG_ANGLE_UNIT_RADIANS = 1,
BG_ANGLE_UNIT_DEGREES = 2,
BG_ANGLE_UNIT_TURNS = 3
} angle_unit_t;
typedef enum {
@ -39,394 +39,178 @@ typedef enum {
* The measure of an angle with a range of:
* [0, 360) degrees, [0, 2xPI) radians, [0, 1) turns, [0, 400) gradians
*/
ANGLE_RANGE_UNSIGNED = 1,
BG_ANGLE_RANGE_UNSIGNED = 1,
/**
* The measure of an angle with a range of:
* (-180, 180] degrees, (-PI, PI] radians, (-0.5, 0.5] turns, (-200, 200] gradians
*/
ANGLE_RANGE_SIGNED = 2
BG_ANGLE_RANGE_SIGNED = 2
} angle_range_t;
// !================= Radians ==================! //
// ========= Convert radians to degrees ========= //
static inline float sp_radians_to_degrees(const float radians)
static inline float bg_fp32_radians_to_degrees(const float radians)
{
return radians * SP_DEGREES_IN_RADIAN;
return radians * BG_FP32_DEGREES_IN_RADIAN;
}
static inline double dp_radians_to_degrees(const double radians)
static inline double bg_fp64_radians_to_degrees(const double radians)
{
return radians * DP_DEGREES_IN_RADIAN;
return radians * BG_FP64_DEGREES_IN_RADIAN;
}
// ========== Convert radians to turns ========== //
static inline float sp_radians_to_turns(const float radians)
static inline float bg_fp32_radians_to_turns(const float radians)
{
return radians * SP_TURNS_IN_RADIAN;
return radians * BG_FP32_TURNS_IN_RADIAN;
}
static inline double dp_radians_to_turns(const double radians)
static inline double bg_fp64_radians_to_turns(const double radians)
{
return radians * DP_TURNS_IN_RADIAN;
}
// ========= Convert degrees to radians ========= //
static inline float sp_degrees_to_radians(const float degrees)
{
return degrees * SP_RADIANS_IN_DEGREE;
}
static inline double dp_degrees_to_radians(const double degrees)
{
return degrees * DP_RADIANS_IN_DEGREE;
}
// ========== Convert degrees to turns ========== //
static inline float sp_degrees_to_turns(const float radians)
{
return radians * SP_TURNS_IN_DEGREE;
}
static inline double dp_degrees_to_turns(const double radians)
{
return radians * DP_TURNS_IN_DEGREE;
}
// ========== Convert turns to radians ========== //
static inline float sp_turns_to_radians(const float turns)
{
return turns * SP_TWO_PI;
}
static inline double dp_turns_to_radians(const double turns)
{
return turns * DP_TWO_PI;
}
// ========== Convert turns to degrees ========== //
static inline float sp_turns_to_degrees(const float turns)
{
return turns * 360.0f;
}
static inline double dp_turns_to_degrees(const double turns)
{
return turns * 360.0;
return radians * BG_FP64_TURNS_IN_RADIAN;
}
// ========= Convert radians to any unit ======== //
static inline float sp_convert_from_radians(const float radians, const angle_unit_t to_unit)
static inline float bg_fp32_radians_to_units(const float radians, const angle_unit_t to_unit)
{
if (to_unit == ANGLE_UNIT_DEGREES) {
return radians * SP_DEGREES_IN_RADIAN;
if (to_unit == BG_ANGLE_UNIT_DEGREES) {
return radians * BG_FP32_DEGREES_IN_RADIAN;
}
if (to_unit == ANGLE_UNIT_TURNS) {
return radians * SP_TURNS_IN_RADIAN;
if (to_unit == BG_ANGLE_UNIT_TURNS) {
return radians * BG_FP32_TURNS_IN_RADIAN;
}
return radians;
}
static inline double dp_convert_from_radians(const double radians, const angle_unit_t to_unit)
static inline double bg_fp64_radians_to_units(const double radians, const angle_unit_t to_unit)
{
if (to_unit == ANGLE_UNIT_DEGREES) {
return radians * DP_DEGREES_IN_RADIAN;
if (to_unit == BG_ANGLE_UNIT_DEGREES) {
return radians * BG_FP64_DEGREES_IN_RADIAN;
}
if (to_unit == ANGLE_UNIT_TURNS) {
return radians * DP_TURNS_IN_RADIAN;
if (to_unit == BG_ANGLE_UNIT_TURNS) {
return radians * BG_FP64_TURNS_IN_RADIAN;
}
return radians;
}
// ========= Convert degreess to any unit ======== //
static inline float sp_convert_from_degrees(const float degrees, const angle_unit_t to_unit)
{
if (to_unit == ANGLE_UNIT_RADIANS) {
return degrees * SP_RADIANS_IN_DEGREE;
}
if (to_unit == ANGLE_UNIT_TURNS) {
return degrees * SP_TURNS_IN_DEGREE;
}
return degrees;
}
static inline double dp_convert_from_degrees(const double degrees, const angle_unit_t to_unit)
{
if (to_unit == ANGLE_UNIT_RADIANS) {
return degrees * DP_RADIANS_IN_DEGREE;
}
if (to_unit == ANGLE_UNIT_TURNS) {
return degrees * DP_TURNS_IN_DEGREE;
}
return degrees;
}
// ========= Convert turns to any unit ======== //
static inline float sp_convert_from_turns(const float turns, const angle_unit_t to_unit)
{
if (to_unit == ANGLE_UNIT_RADIANS) {
return turns * SP_TWO_PI;
}
if (to_unit == ANGLE_UNIT_DEGREES) {
return turns * 360.0f;
}
return turns;
}
static inline double dp_convert_from_turns(const double turns, const angle_unit_t to_unit)
{
if (to_unit == ANGLE_UNIT_RADIANS) {
return turns * DP_TWO_PI;
}
if (to_unit == ANGLE_UNIT_DEGREES) {
return turns * 360.0;
}
return turns;
}
// ========= Convert any unit to radians ======== //
static inline float sp_convert_to_radians(const float angle, const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_DEGREES) {
return angle * SP_RADIANS_IN_DEGREE;
}
if (unit == ANGLE_UNIT_TURNS) {
return angle * SP_TWO_PI;
}
return angle;
}
static inline double dp_convert_to_radians(const double angle, const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_DEGREES) {
return angle * DP_RADIANS_IN_DEGREE;
}
if (unit == ANGLE_UNIT_TURNS) {
return angle * DP_TWO_PI;
}
return angle;
}
// ========= Convert any unit to degreess ======== //
static inline float sp_convert_to_degrees(const float angle, const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_DEGREES) {
return angle * SP_DEGREES_IN_RADIAN;
}
if (unit == ANGLE_UNIT_TURNS) {
return angle * 360.0f;
}
return angle;
}
static inline double dp_convert_to_degrees(const double angle, const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_RADIANS) {
return angle * DP_DEGREES_IN_RADIAN;
}
if (unit == ANGLE_UNIT_TURNS) {
return angle * 360.0;
}
return angle;
}
// ========= Convert any unit to turns ======== //
static inline float sp_convert_to_turns(const float angle, const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_RADIANS) {
return angle * SP_TURNS_IN_RADIAN;
}
if (unit == ANGLE_UNIT_DEGREES) {
return angle * SP_TURNS_IN_DEGREE;
}
return angle;
}
static inline double dp_convert_to_turns(const double angle, const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_RADIANS) {
return angle * DP_TURNS_IN_RADIAN;
}
if (unit == ANGLE_UNIT_DEGREES) {
return angle * DP_TURNS_IN_DEGREE;
}
return angle;
}
// ============= Get Full Circle ============== //
static inline float sp_get_full_circle(const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_RADIANS) {
return SP_TWO_PI;
}
if (unit == ANGLE_UNIT_DEGREES) {
return 360.0f;
}
return 1.0f;
}
static inline double dp_get_full_circle(const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_RADIANS) {
return DP_TWO_PI;
}
if (unit == ANGLE_UNIT_DEGREES) {
return 360.0;
}
return 1.0;
}
// ============= Get Half Circle ============== //
static inline float sp_get_half_circle(const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_RADIANS) {
return SP_PI;
}
if (unit == ANGLE_UNIT_DEGREES) {
return 180.0f;
}
return 0.5f;
}
static inline double dp_get_half_circle(const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_RADIANS) {
return DP_PI;
}
if (unit == ANGLE_UNIT_DEGREES) {
return 180.0;
}
return 0.5;
}
// ============= Get Half Circle ============== //
static inline float sp_get_quater_circle(const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_RADIANS) {
return SP_HALF_OF_PI;
}
if (unit == ANGLE_UNIT_DEGREES) {
return 90.0f;
}
return 0.25f;
}
static inline double dp_get_quater_circle(const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_RADIANS) {
return DP_HALF_OF_PI;
}
if (unit == ANGLE_UNIT_DEGREES) {
return 90.0;
}
return 0.25;
}
// ============ Normalize radians ============= //
static inline float sp_normalize_radians(const float radians, const angle_range_t range)
static inline float bg_fp32_radians_normalize(const float radians, const angle_range_t range)
{
if (range == ANGLE_RANGE_UNSIGNED) {
if (0.0f <= radians && radians < SP_TWO_PI) {
if (range == BG_ANGLE_RANGE_UNSIGNED) {
if (0.0f <= radians && radians < BG_FP32_TWO_PI) {
return radians;
}
}
else {
if (-SP_PI < radians && radians <= SP_PI) {
if (-BG_FP32_PI < radians && radians <= BG_FP32_PI) {
return radians;
}
}
float turns = radians * SP_TURNS_IN_RADIAN;
float turns = radians * BG_FP32_TURNS_IN_RADIAN;
turns -= floorf(turns);
if (range == ANGLE_RANGE_SIGNED && turns > 0.5f) {
if (range == BG_ANGLE_RANGE_SIGNED && turns > 0.5f) {
turns -= 1.0f;
}
return turns * SP_TWO_PI;
return turns * BG_FP32_TWO_PI;
}
static inline double dp_normalize_radians(const double radians, const angle_range_t range)
static inline double bg_fp64_radians_normalize(const double radians, const angle_range_t range)
{
if (range == ANGLE_RANGE_UNSIGNED) {
if (0.0 <= radians && radians < DP_TWO_PI) {
if (range == BG_ANGLE_RANGE_UNSIGNED) {
if (0.0 <= radians && radians < BG_FP64_TWO_PI) {
return radians;
}
}
else {
if (-DP_PI < radians && radians <= DP_PI) {
if (-BG_FP64_PI < radians && radians <= BG_FP64_PI) {
return radians;
}
}
double turns = radians * DP_TURNS_IN_RADIAN;
double turns = radians * BG_FP64_TURNS_IN_RADIAN;
turns -= floor(turns);
if (range == ANGLE_RANGE_SIGNED && turns > 0.5) {
if (range == BG_ANGLE_RANGE_SIGNED && turns > 0.5) {
turns -= 1.0;
}
return turns * DP_TWO_PI;
return turns * BG_FP64_TWO_PI;
}
// !================= Degrees ==================! //
// ========= Convert degrees to radians ========= //
static inline float bg_fp32_degrees_to_radians(const float degrees)
{
return degrees * BG_FP32_RADIANS_IN_DEGREE;
}
static inline double bg_fp64_degrees_to_radians(const double degrees)
{
return degrees * BG_FP64_RADIANS_IN_DEGREE;
}
// ========== Convert degrees to turns ========== //
static inline float bg_fp32_degrees_to_turns(const float radians)
{
return radians * BG_FP32_TURNS_IN_DEGREE;
}
static inline double bg_fp64_degrees_to_turns(const double radians)
{
return radians * BG_FP64_TURNS_IN_DEGREE;
}
// ========= Convert degreess to any unit ======== //
static inline float bg_fp32_degrees_to_units(const float degrees, const angle_unit_t to_unit)
{
if (to_unit == BG_ANGLE_UNIT_RADIANS) {
return degrees * BG_FP32_RADIANS_IN_DEGREE;
}
if (to_unit == BG_ANGLE_UNIT_TURNS) {
return degrees * BG_FP32_TURNS_IN_DEGREE;
}
return degrees;
}
static inline double bg_fp64_degrees_to_units(const double degrees, const angle_unit_t to_unit)
{
if (to_unit == BG_ANGLE_UNIT_RADIANS) {
return degrees * BG_FP64_RADIANS_IN_DEGREE;
}
if (to_unit == BG_ANGLE_UNIT_TURNS) {
return degrees * BG_FP64_TURNS_IN_DEGREE;
}
return degrees;
}
// ============ Normalize degrees ============= //
static inline float sp_normalize_degrees(const float degrees, const angle_range_t range)
static inline float bg_fp32_degrees_normalize(const float degrees, const angle_range_t range)
{
if (range == ANGLE_RANGE_UNSIGNED) {
if (range == BG_ANGLE_RANGE_UNSIGNED) {
if (0.0f <= degrees && degrees < 360.0f) {
return degrees;
}
@ -437,20 +221,20 @@ static inline float sp_normalize_degrees(const float degrees, const angle_range_
}
}
float turns = degrees * SP_TURNS_IN_DEGREE;
float turns = degrees * BG_FP32_TURNS_IN_DEGREE;
turns -= floorf(turns);
if (range == ANGLE_RANGE_SIGNED && turns > 0.5f) {
if (range == BG_ANGLE_RANGE_SIGNED && turns > 0.5f) {
turns -= 1.0f;
}
return turns * 360.0f;
}
static inline double dp_normalize_degrees(const double degrees, const angle_range_t range)
static inline double bg_fp64_degrees_normalize(const double degrees, const angle_range_t range)
{
if (range == ANGLE_RANGE_UNSIGNED) {
if (range == BG_ANGLE_RANGE_UNSIGNED) {
if (0.0 <= degrees && degrees < 360.0) {
return degrees;
}
@ -461,22 +245,76 @@ static inline double dp_normalize_degrees(const double degrees, const angle_rang
}
}
double turns = degrees * DP_TURNS_IN_DEGREE;
double turns = degrees * BG_FP64_TURNS_IN_DEGREE;
turns -= floor(turns);
if (range == ANGLE_RANGE_SIGNED && turns > 0.5) {
if (range == BG_ANGLE_RANGE_SIGNED && turns > 0.5) {
turns -= 1.0;
}
return turns * 360.0;
}
// !================== Turns ===================! //
// ========== Convert turns to radians ========== //
static inline float bg_fp32_turns_to_radians(const float turns)
{
return turns * BG_FP32_TWO_PI;
}
static inline double bg_fp64_turns_to_radians(const double turns)
{
return turns * BG_FP64_TWO_PI;
}
// ========== Convert turns to degrees ========== //
static inline float bg_fp32_turns_to_degrees(const float turns)
{
return turns * 360.0f;
}
static inline double bg_fp64_turns_to_degrees(const double turns)
{
return turns * 360.0;
}
// ========= Convert turns to any unit ======== //
static inline float bg_fp32_turns_to_units(const float turns, const angle_unit_t to_unit)
{
if (to_unit == BG_ANGLE_UNIT_RADIANS) {
return turns * BG_FP32_TWO_PI;
}
if (to_unit == BG_ANGLE_UNIT_DEGREES) {
return turns * 360.0f;
}
return turns;
}
static inline double bg_fp64_turns_to_units(const double turns, const angle_unit_t to_unit)
{
if (to_unit == BG_ANGLE_UNIT_RADIANS) {
return turns * BG_FP64_TWO_PI;
}
if (to_unit == BG_ANGLE_UNIT_DEGREES) {
return turns * 360.0;
}
return turns;
}
// ============= Normalize turns ============== //
static inline float sp_normalize_turns(const float turns, const angle_range_t range)
static inline float bg_fp32_turns_normalize(const float turns, const angle_range_t range)
{
if (range == ANGLE_RANGE_UNSIGNED) {
if (range == BG_ANGLE_RANGE_UNSIGNED) {
if (0.0f <= turns && turns < 1.0f) {
return turns;
}
@ -489,16 +327,16 @@ static inline float sp_normalize_turns(const float turns, const angle_range_t ra
float rest = turns - floorf(turns);
if (range == ANGLE_RANGE_SIGNED && rest > 0.5f) {
if (range == BG_ANGLE_RANGE_SIGNED && rest > 0.5f) {
return rest - 1.0f;
}
return rest;
}
static inline double dp_normalize_turns(const double turns, const angle_range_t range)
static inline double bg_fp64_turns_normalize(const double turns, const angle_range_t range)
{
if (range == ANGLE_RANGE_UNSIGNED) {
if (range == BG_ANGLE_RANGE_UNSIGNED) {
if (0.0 <= turns && turns < 1.0) {
return turns;
}
@ -511,39 +349,209 @@ static inline double dp_normalize_turns(const double turns, const angle_range_t
double rest = turns - floor(turns);
if (range == ANGLE_RANGE_SIGNED && rest > 0.5) {
if (range == BG_ANGLE_RANGE_SIGNED && rest > 0.5) {
return rest - 1.0;
}
return rest;
}
// ================ Normalize ================= //
// !================== Angle ===================! //
static inline float sp_normalize_angle(const float angle, const angle_unit_t unit, const angle_range_t range)
// ========= Convert any unit to radians ======== //
static inline float bg_fp32_angle_to_radians(const float angle, const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_DEGREES) {
return sp_normalize_degrees(angle, range);
if (unit == BG_ANGLE_UNIT_DEGREES) {
return angle * BG_FP32_RADIANS_IN_DEGREE;
}
if (unit == ANGLE_UNIT_TURNS) {
return sp_normalize_turns(angle, range);
if (unit == BG_ANGLE_UNIT_TURNS) {
return angle * BG_FP32_TWO_PI;
}
return sp_normalize_radians(angle, range);
return angle;
}
static inline double dp_normalize_angle(const double angle, const angle_unit_t unit, const angle_range_t range)
static inline double bg_fp64_angle_to_radians(const double angle, const angle_unit_t unit)
{
if (unit == ANGLE_UNIT_DEGREES) {
return dp_normalize_degrees(angle, range);
if (unit == BG_ANGLE_UNIT_DEGREES) {
return angle * BG_FP64_RADIANS_IN_DEGREE;
}
if (unit == ANGLE_UNIT_TURNS) {
return dp_normalize_turns(angle, range);
if (unit == BG_ANGLE_UNIT_TURNS) {
return angle * BG_FP64_TWO_PI;
}
return dp_normalize_radians(angle, range);
return angle;
}
// ========= Convert any unit to degreess ======== //
static inline float bg_fp32_angle_to_degrees(const float angle, const angle_unit_t unit)
{
if (unit == BG_ANGLE_UNIT_RADIANS) {
return angle * BG_FP32_DEGREES_IN_RADIAN;
}
if (unit == BG_ANGLE_UNIT_TURNS) {
return angle * 360.0f;
}
return angle;
}
static inline double bg_fp64_angle_to_degrees(const double angle, const angle_unit_t unit)
{
if (unit == BG_ANGLE_UNIT_RADIANS) {
return angle * BG_FP64_DEGREES_IN_RADIAN;
}
if (unit == BG_ANGLE_UNIT_TURNS) {
return angle * 360.0;
}
return angle;
}
// ========= Convert any unit to turns ======== //
static inline float bg_fp32_angle_to_turns(const float angle, const angle_unit_t unit)
{
if (unit == BG_ANGLE_UNIT_RADIANS) {
return angle * BG_FP32_TURNS_IN_RADIAN;
}
if (unit == BG_ANGLE_UNIT_DEGREES) {
return angle * BG_FP32_TURNS_IN_DEGREE;
}
return angle;
}
static inline double bg_fp64_angle_to_turns(const double angle, const angle_unit_t unit)
{
if (unit == BG_ANGLE_UNIT_RADIANS) {
return angle * BG_FP64_TURNS_IN_RADIAN;
}
if (unit == BG_ANGLE_UNIT_DEGREES) {
return angle * BG_FP64_TURNS_IN_DEGREE;
}
return angle;
}
// ============= Get Full Circle ============== //
static inline float bg_fp32_angle_get_full_circle(const angle_unit_t unit)
{
if (unit == BG_ANGLE_UNIT_DEGREES) {
return 360.0f;
}
if (unit == BG_ANGLE_UNIT_TURNS) {
return 1.0f;
}
return BG_FP32_TWO_PI;
}
static inline double bg_fp64_angle_get_full_circle(const angle_unit_t unit)
{
if (unit == BG_ANGLE_UNIT_DEGREES) {
return 360.0;
}
if (unit == BG_ANGLE_UNIT_TURNS) {
return 1.0;
}
return BG_FP64_TWO_PI;
}
// ============= Get Half Circle ============== //
static inline float bg_fp32_angle_get_half_circle(const angle_unit_t unit)
{
if (unit == BG_ANGLE_UNIT_DEGREES) {
return 180.0f;
}
if (unit == BG_ANGLE_UNIT_TURNS) {
return 0.5f;
}
return BG_FP32_PI;
}
static inline double bg_fp64_angle_get_half_circle(const angle_unit_t unit)
{
if (unit == BG_ANGLE_UNIT_DEGREES) {
return 180.0;
}
if (unit == BG_ANGLE_UNIT_TURNS) {
return 0.5;
}
return BG_FP64_PI;
}
// ============= Get Half Circle ============== //
static inline float bg_fp32_angle_get_quater_circle(const angle_unit_t unit)
{
if (unit == BG_ANGLE_UNIT_DEGREES) {
return 90.0f;
}
if (unit == BG_ANGLE_UNIT_TURNS) {
return 0.25f;
}
return BG_FP32_HALF_OF_PI;
}
static inline double bg_fp64_angle_get_quater_circle(const angle_unit_t unit)
{
if (unit == BG_ANGLE_UNIT_DEGREES) {
return 90.0;
}
if (unit == BG_ANGLE_UNIT_TURNS) {
return 0.25;
}
return BG_FP64_HALF_OF_PI;
}
// ================ Normalize ================= //
static inline float bg_fp32_angle_normalize(const float angle, const angle_unit_t unit, const angle_range_t range)
{
if (unit == BG_ANGLE_UNIT_DEGREES) {
return bg_fp32_degrees_normalize(angle, range);
}
if (unit == BG_ANGLE_UNIT_TURNS) {
return bg_fp32_turns_normalize(angle, range);
}
return bg_fp32_radians_normalize(angle, range);
}
static inline double bg_fp64_angle_normalize(const double angle, const angle_unit_t unit, const angle_range_t range)
{
if (unit == BG_ANGLE_UNIT_DEGREES) {
return bg_fp64_degrees_normalize(angle, range);
}
if (unit == BG_ANGLE_UNIT_TURNS) {
return bg_fp64_turns_normalize(angle, range);
}
return bg_fp64_radians_normalize(angle, range);
}
#endif

View file

@ -1,56 +1,56 @@
#ifndef __GEOMETRY__TYPES_H_
#define __GEOMETRY__TYPES_H_
#define SP_EPSYLON_EFFECTIVENESS_LIMIT 10.0f
#define BG_FP32_EPSYLON_EFFECTIVENESS_LIMIT 10.0f
#define SP_EPSYLON 5E-7f
#define SP_TWO_EPSYLON 1E-6f
#define SP_SQUARE_EPSYLON 2.5E-13f
#define BG_FP32_EPSYLON 5E-7f
#define BG_FP32_TWO_EPSYLON 1E-6f
#define BG_FP32_SQUARE_EPSYLON 2.5E-13f
#define SP_ONE_THIRD 0.333333333f
#define SP_ONE_SIXTH 0.166666667f
#define SP_ONE_NINETH 0.111111111f
#define BG_FP32_ONE_THIRD 0.333333333f
#define BG_FP32_ONE_SIXTH 0.166666667f
#define BG_FP32_ONE_NINETH 0.111111111f
#define SP_GOLDEN_RATIO_HIGH 1.618034f
#define SP_GOLDEN_RATIO_LOW 0.618034f
#define BG_FP32_GOLDEN_RATIO_HIGH 1.618034f
#define BG_FP32_GOLDEN_RATIO_LOW 0.618034f
#define DP_EPSYLON_EFFECTIVENESS_LIMIT 10.0
#define BG_FP64_EPSYLON_EFFECTIVENESS_LIMIT 10.0
#define DP_EPSYLON 5E-14
#define DP_TWO_EPSYLON 1E-13
#define DP_SQUARE_EPSYLON 2.5E-27
#define BG_FP64_EPSYLON 5E-14
#define BG_FP64_TWO_EPSYLON 1E-13
#define BG_FP64_SQUARE_EPSYLON 2.5E-27
#define DP_ONE_THIRD 0.333333333333333333
#define DP_ONE_SIXTH 0.166666666666666667
#define DP_ONE_NINETH 0.111111111111111111
#define BG_FP64_ONE_THIRD 0.333333333333333333
#define BG_FP64_ONE_SIXTH 0.166666666666666667
#define BG_FP64_ONE_NINETH 0.111111111111111111
#define DP_GOLDEN_RATIO_HIGH 1.61803398874989485
#define DP_GOLDEN_RATIO_LOW 0.61803398874989485
#define BG_FP64_GOLDEN_RATIO_HIGH 1.61803398874989485
#define BG_FP64_GOLDEN_RATIO_LOW 0.61803398874989485
static inline int sp_are_equal(const float value1, const float value2)
static inline int bg_fp32_are_equal(const float value1, const float value2)
{
if (-SP_EPSYLON_EFFECTIVENESS_LIMIT < value1 && value1 < SP_EPSYLON_EFFECTIVENESS_LIMIT) {
return -SP_EPSYLON <= (value1 - value2) && (value1 - value2) <= SP_EPSYLON;
if (-BG_FP32_EPSYLON_EFFECTIVENESS_LIMIT < value1 && value1 < BG_FP32_EPSYLON_EFFECTIVENESS_LIMIT) {
return -BG_FP32_EPSYLON <= (value1 - value2) && (value1 - value2) <= BG_FP32_EPSYLON;
}
if (value1 < 0.0f) {
return (1.0f + SP_EPSYLON) * value2 <= value1 && (1.0f + SP_EPSYLON) * value1 <= value2;
return (1.0f + BG_FP32_EPSYLON) * value2 <= value1 && (1.0f + BG_FP32_EPSYLON) * value1 <= value2;
}
return value2 <= value1 * (1.0f + SP_EPSYLON) && value1 <= value2 * (1.0f + SP_EPSYLON);
return value2 <= value1 * (1.0f + BG_FP32_EPSYLON) && value1 <= value2 * (1.0f + BG_FP32_EPSYLON);
}
static inline int dp_are_equal(const double value1, const double value2)
static inline int bg_fp64_are_equal(const double value1, const double value2)
{
if (-DP_EPSYLON_EFFECTIVENESS_LIMIT < value1 && value1 < DP_EPSYLON_EFFECTIVENESS_LIMIT) {
return -DP_EPSYLON <= (value1 - value2) && (value1 - value2) <= DP_EPSYLON;
if (-BG_FP64_EPSYLON_EFFECTIVENESS_LIMIT < value1 && value1 < BG_FP64_EPSYLON_EFFECTIVENESS_LIMIT) {
return -BG_FP64_EPSYLON <= (value1 - value2) && (value1 - value2) <= BG_FP64_EPSYLON;
}
if (value1 < 0.0) {
return (1.0 + DP_EPSYLON) * value2 <= value1 && (1.0 + DP_EPSYLON) * value1 <= value2;
return (1.0 + BG_FP64_EPSYLON) * value2 <= value1 && (1.0 + BG_FP64_EPSYLON) * value1 <= value2;
}
return value2 <= value1 * (1.0 + DP_EPSYLON) && value1 <= value2 * (1.0 + DP_EPSYLON);
return value2 <= value1 * (1.0 + BG_FP64_EPSYLON) && value1 <= value2 * (1.0 + BG_FP64_EPSYLON);
}
#endif

View file

@ -2,11 +2,76 @@
<CodeBlocks_layout_file>
<FileVersion major="1" minor="0" />
<ActiveTarget name="Debug" />
<File name="matrix2x3.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1596" topLine="0" />
</Cursor>
</File>
<File name="angle.c" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
<File name="quaternion.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1849" topLine="187" />
</Cursor>
</File>
<File name="matrix2x2.c" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="24" topLine="0" />
</Cursor>
</File>
<File name="matrix2x2.h" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="13404" topLine="440" />
</Cursor>
</File>
<File name="vector2.h" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="556" topLine="12" />
</Cursor>
</File>
<File name="vector2.c" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="24" topLine="0" />
</Cursor>
</File>
<File name="versor.c" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="504" topLine="0" />
</Cursor>
</File>
<File name="rotation3.c" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="154" topLine="0" />
</Cursor>
</File>
<File name="versor.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="27" topLine="0" />
</Cursor>
</File>
<File name="basis.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="103" topLine="0" />
</Cursor>
</File>
<File name="basis.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="20" topLine="0" />
</Cursor>
</File>
<File name="angle.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1082" topLine="0" />
</Cursor>
</File>
<File name="matrix3x2.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="897" topLine="52" />
</Cursor>
</File>
<File name="quaternion.c" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="6789" topLine="145" />
@ -14,67 +79,7 @@
</File>
<File name="matrix3x3.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="18608" topLine="582" />
</Cursor>
</File>
<File name="matrix3x2.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="897" topLine="52" />
</Cursor>
</File>
<File name="vector2.h" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="556" topLine="12" />
</Cursor>
</File>
<File name="rotation3.h" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="305" topLine="29" />
</Cursor>
</File>
<File name="vector3.h" open="1" top="1" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="16048" topLine="102" />
</Cursor>
</File>
<File name="quaternion.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1849" topLine="187" />
</Cursor>
</File>
<File name="basis.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="103" topLine="0" />
</Cursor>
</File>
<File name="versor.c" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="504" topLine="0" />
</Cursor>
</File>
<File name="matrix3x3.c" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="23" topLine="72" />
</Cursor>
</File>
<File name="angle.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1082" topLine="0" />
</Cursor>
</File>
<File name="versor.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="27" topLine="0" />
</Cursor>
</File>
<File name="rotation3.c" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="154" topLine="0" />
</Cursor>
</File>
<File name="matrix2x3.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1596" topLine="0" />
<Cursor1 position="17612" topLine="537" />
</Cursor>
</File>
<File name="geometry.h" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
@ -82,29 +87,24 @@
<Cursor1 position="316" topLine="0" />
</Cursor>
</File>
<File name="vector3.h" open="1" top="1" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="15169" topLine="102" />
</Cursor>
</File>
<File name="rotation3.h" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="305" topLine="29" />
</Cursor>
</File>
<File name="matrix3x3.c" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="23" topLine="72" />
</Cursor>
</File>
<File name="vector3.c" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="24" topLine="0" />
</Cursor>
</File>
<File name="matrix2x2.h" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="18276" topLine="538" />
</Cursor>
</File>
<File name="basis.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="20" topLine="0" />
</Cursor>
</File>
<File name="vector2.c" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="24" topLine="0" />
</Cursor>
</File>
<File name="angle.c" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
</CodeBlocks_layout_file>

View file

@ -7,7 +7,7 @@
// =================== Reset ==================== //
static inline void sp_matrix2x2_reset(SPMatrix2x2* matrix)
static inline void bg_fp32_matrix2x2_reset(BgFP32Matrix2x2* matrix)
{
matrix->r1c1 = 0.0f;
matrix->r1c2 = 0.0f;
@ -15,7 +15,7 @@ static inline void sp_matrix2x2_reset(SPMatrix2x2* matrix)
matrix->r2c2 = 0.0f;
}
static inline void dp_matrix2x2_reset(DPMatrix2x2* matrix)
static inline void bg_fp64_matrix2x2_reset(BgFP64Matrix2x2* matrix)
{
matrix->r1c1 = 0.0;
matrix->r1c2 = 0.0;
@ -25,7 +25,7 @@ static inline void dp_matrix2x2_reset(DPMatrix2x2* matrix)
// ================== Identity ================== //
static inline void sp_matrix2x2_make_identity(SPMatrix2x2* matrix)
static inline void bg_fp32_matrix2x2_set_to_identity(BgFP32Matrix2x2* matrix)
{
matrix->r1c1 = 1.0f;
matrix->r1c2 = 0.0f;
@ -33,7 +33,7 @@ static inline void sp_matrix2x2_make_identity(SPMatrix2x2* matrix)
matrix->r2c2 = 1.0f;
}
static inline void dp_matrix2x2_make_identity(DPMatrix2x2* matrix)
static inline void bg_fp64_matrix2x2_set_to_identity(BgFP64Matrix2x2* matrix)
{
matrix->r1c1 = 1.0;
matrix->r1c2 = 0.0;
@ -43,7 +43,7 @@ static inline void dp_matrix2x2_make_identity(DPMatrix2x2* matrix)
// ================ Make Diagonal =============== //
static inline void sp_matrix2x2_make_diagonal(const float d1, const float d2, SPMatrix2x2* matrix)
static inline void bg_fp32_matrix2x2_set_to_diagonal(const float d1, const float d2, BgFP32Matrix2x2* matrix)
{
matrix->r1c1 = d1;
matrix->r1c2 = 0.0f;
@ -51,7 +51,7 @@ static inline void sp_matrix2x2_make_diagonal(const float d1, const float d2, SP
matrix->r2c2 = d2;
}
static inline void dp_matrix2x2_make_diagonal(const double d1, const double d2, DPMatrix2x2* matrix)
static inline void bg_fp64_matrix2x2_set_to_diagonal(const double d1, const double d2, BgFP64Matrix2x2* matrix)
{
matrix->r1c1 = d1;
matrix->r1c2 = 0.0;
@ -61,9 +61,9 @@ static inline void dp_matrix2x2_make_diagonal(const double d1, const double d2,
// ============== Rotation Matrix =============== //
static inline void sp_matrix2x2_make_turn(const float angle, const angle_unit_t unit, SPMatrix2x2* matrix)
static inline void bg_fp32_matrix2x2_make_turn(const float angle, const angle_unit_t unit, BgFP32Matrix2x2* matrix)
{
const float radians = sp_convert_to_radians(angle, unit);
const float radians = bg_fp32_angle_to_radians(angle, unit);
const float cosine = cosf(radians);
const float sine = sinf(radians);
@ -73,9 +73,9 @@ static inline void sp_matrix2x2_make_turn(const float angle, const angle_unit_t
matrix->r2c2 = cosine;
}
static inline void dp_matrix2x2_make_turn(const double angle, const angle_unit_t unit, DPMatrix2x2* matrix)
static inline void bg_fp64_matrix2x2_make_turn(const double angle, const angle_unit_t unit, BgFP64Matrix2x2* matrix)
{
const double radians = dp_convert_to_radians(angle, unit);
const double radians = bg_fp64_angle_to_radians(angle, unit);
const double cosine = cos(radians);
const double sine = sin(radians);
@ -87,7 +87,7 @@ static inline void dp_matrix2x2_make_turn(const double angle, const angle_unit_t
// ==================== Copy ==================== //
static inline void sp_matrix2x2_copy(const SPMatrix2x2* from, SPMatrix2x2* to)
static inline void bg_fp32_matrix2x2_copy(const BgFP32Matrix2x2* from, BgFP32Matrix2x2* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r1c2;
@ -96,7 +96,7 @@ static inline void sp_matrix2x2_copy(const SPMatrix2x2* from, SPMatrix2x2* to)
to->r2c2 = from->r2c2;
}
static inline void dp_matrix2x2_copy(const DPMatrix2x2* from, DPMatrix2x2* to)
static inline void bg_fp64_matrix2x2_copy(const BgFP64Matrix2x2* from, BgFP64Matrix2x2* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r1c2;
@ -107,7 +107,7 @@ static inline void dp_matrix2x2_copy(const DPMatrix2x2* from, DPMatrix2x2* to)
// ============= Copy to twin type ============== //
static inline void sp_matrix2x2_set_from_double(const DPMatrix2x2* from, SPMatrix2x2* to)
static inline void bg_fp32_matrix2x2_set_from_fp64(const BgFP64Matrix2x2* from, BgFP32Matrix2x2* to)
{
to->r1c1 = (float)from->r1c1;
to->r1c2 = (float)from->r1c2;
@ -116,7 +116,7 @@ static inline void sp_matrix2x2_set_from_double(const DPMatrix2x2* from, SPMatri
to->r2c2 = (float)from->r2c2;
}
static inline void dp_matrix2x2_set_from_single(const SPMatrix2x2* from, DPMatrix2x2* to)
static inline void bg_fp64_matrix2x2_set_from_fp32(const BgFP32Matrix2x2* from, BgFP64Matrix2x2* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r1c2;
@ -127,42 +127,42 @@ static inline void dp_matrix2x2_set_from_single(const SPMatrix2x2* from, DPMatri
// ================ Determinant ================= //
static inline float sp_matrix2x2_get_determinant(const SPMatrix2x2* matrix)
static inline float bg_fp32_matrix2x2_get_determinant(const BgFP32Matrix2x2* matrix)
{
return matrix->r1c1 * matrix->r2c2 - matrix->r1c2 * matrix->r2c1;
}
static inline double dp_matrix2x2_get_determinant(const DPMatrix2x2* matrix)
static inline double bg_fp64_matrix2x2_get_determinant(const BgFP64Matrix2x2* matrix)
{
return matrix->r1c1 * matrix->r2c2 - matrix->r1c2 * matrix->r2c1;
}
// ================== Singular ================== //
static inline int sp_matrix2x2_is_singular(const SPMatrix2x2* matrix)
static inline int bg_fp32_matrix2x2_is_singular(const BgFP32Matrix2x2* matrix)
{
const float determinant = sp_matrix2x2_get_determinant(matrix);
const float determinant = bg_fp32_matrix2x2_get_determinant(matrix);
return -SP_EPSYLON <= determinant && determinant <= SP_EPSYLON;
return -BG_FP32_EPSYLON <= determinant && determinant <= BG_FP32_EPSYLON;
}
static inline int dp_matrix2x2_is_singular(const DPMatrix2x2* matrix)
static inline int bg_fp64_matrix2x2_is_singular(const BgFP64Matrix2x2* matrix)
{
const double determinant = dp_matrix2x2_get_determinant(matrix);
const double determinant = bg_fp64_matrix2x2_get_determinant(matrix);
return -DP_EPSYLON <= determinant && determinant <= DP_EPSYLON;
return -BG_FP64_EPSYLON <= determinant && determinant <= BG_FP64_EPSYLON;
}
// =============== Transposition ================ //
static inline void sp_matrix2x2_transpose(SPMatrix2x2* matrix)
static inline void bg_fp32_matrix2x2_transpose(BgFP32Matrix2x2* matrix)
{
const float tmp = matrix->r1c2;
matrix->r1c2 = matrix->r2c1;
matrix->r2c1 = tmp;
}
static inline void dp_matrix2x2_transpose(DPMatrix2x2* matrix)
static inline void bg_fp64_matrix2x2_transpose(BgFP64Matrix2x2* matrix)
{
const double tmp = matrix->r1c2;
matrix->r1c2 = matrix->r2c1;
@ -171,11 +171,11 @@ static inline void dp_matrix2x2_transpose(DPMatrix2x2* matrix)
// ================= Inversion ================== //
static inline int sp_matrix2x2_invert(SPMatrix2x2* matrix)
static inline int bg_fp32_matrix2x2_invert(BgFP32Matrix2x2* matrix)
{
const float determinant = sp_matrix2x2_get_determinant(matrix);
const float determinant = bg_fp32_matrix2x2_get_determinant(matrix);
if (-SP_EPSYLON <= determinant && determinant <= SP_EPSYLON) {
if (-BG_FP32_EPSYLON <= determinant && determinant <= BG_FP32_EPSYLON) {
return 0;
}
@ -194,11 +194,11 @@ static inline int sp_matrix2x2_invert(SPMatrix2x2* matrix)
return 1;
}
static inline int dp_matrix2x2_invert(DPMatrix2x2* matrix)
static inline int bg_fp64_matrix2x2_invert(BgFP64Matrix2x2* matrix)
{
const double determinant = dp_matrix2x2_get_determinant(matrix);
const double determinant = bg_fp64_matrix2x2_get_determinant(matrix);
if (-DP_EPSYLON <= determinant && determinant <= DP_EPSYLON) {
if (-BG_FP64_EPSYLON <= determinant && determinant <= BG_FP64_EPSYLON) {
return 0;
}
@ -219,7 +219,7 @@ static inline int dp_matrix2x2_invert(DPMatrix2x2* matrix)
// =============== Set Transposed =============== //
static inline void sp_matrix2x2_set_transposed(const SPMatrix2x2* from, SPMatrix2x2* to)
static inline void bg_fp32_matrix2x2_set_transposed(const BgFP32Matrix2x2* from, BgFP32Matrix2x2* to)
{
float tmp = from->r1c2;
@ -230,7 +230,7 @@ static inline void sp_matrix2x2_set_transposed(const SPMatrix2x2* from, SPMatrix
to->r2c2 = from->r2c2;
}
static inline void dp_matrix2x2_set_transposed(const DPMatrix2x2* from, DPMatrix2x2* to)
static inline void bg_fp64_matrix2x2_set_transposed(const BgFP64Matrix2x2* from, BgFP64Matrix2x2* to)
{
double tmp = from->r1c2;
@ -243,11 +243,11 @@ static inline void dp_matrix2x2_set_transposed(const DPMatrix2x2* from, DPMatrix
// ================ Set Inverted ================ //
static inline int sp_matrix2x2_set_inverted(const SPMatrix2x2* from, SPMatrix2x2* to)
static inline int bg_fp32_matrix2x2_set_inverted(const BgFP32Matrix2x2* from, BgFP32Matrix2x2* to)
{
const float determinant = sp_matrix2x2_get_determinant(from);
const float determinant = bg_fp32_matrix2x2_get_determinant(from);
if (-SP_EPSYLON <= determinant && determinant <= SP_EPSYLON) {
if (-BG_FP32_EPSYLON <= determinant && determinant <= BG_FP32_EPSYLON) {
return 0;
}
@ -266,11 +266,11 @@ static inline int sp_matrix2x2_set_inverted(const SPMatrix2x2* from, SPMatrix2x2
return 1;
}
static inline int dp_matrix2x2_set_inverted(const DPMatrix2x2* from, DPMatrix2x2* to)
static inline int bg_fp64_matrix2x2_set_inverted(const BgFP64Matrix2x2* from, BgFP64Matrix2x2* to)
{
const double determinant = dp_matrix2x2_get_determinant(from);
const double determinant = bg_fp64_matrix2x2_get_determinant(from);
if (-DP_EPSYLON <= determinant && determinant <= DP_EPSYLON) {
if (-BG_FP64_EPSYLON <= determinant && determinant <= BG_FP64_EPSYLON) {
return 0;
}
@ -291,13 +291,13 @@ static inline int dp_matrix2x2_set_inverted(const DPMatrix2x2* from, DPMatrix2x2
// ================= Set Row 1 ================== //
static inline void sp_matrix2x2_set_row1(const float c1, const float c2, SPMatrix2x2* matrix)
static inline void bg_fp32_matrix2x2_set_row1(const float c1, const float c2, BgFP32Matrix2x2* matrix)
{
matrix->r1c1 = c1;
matrix->r1c2 = c2;
}
static inline void dp_matrix2x2_set_row1(const double c1, const double c2, DPMatrix2x2* matrix)
static inline void bg_fp64_matrix2x2_set_row1(const double c1, const double c2, BgFP64Matrix2x2* matrix)
{
matrix->r1c1 = c1;
matrix->r1c2 = c2;
@ -305,13 +305,13 @@ static inline void dp_matrix2x2_set_row1(const double c1, const double c2, DPMat
// ================= Set Row 2 ================== //
static inline void sp_matrix2x2_set_row2(const float c1, const float c2, SPMatrix2x2* matrix)
static inline void bg_fp32_matrix2x2_set_row2(const float c1, const float c2, BgFP32Matrix2x2* matrix)
{
matrix->r2c1 = c1;
matrix->r2c2 = c2;
}
static inline void dp_matrix2x2_set_row2(const double c1, const double c2, DPMatrix2x2* matrix)
static inline void bg_fp64_matrix2x2_set_row2(const double c1, const double c2, BgFP64Matrix2x2* matrix)
{
matrix->r2c1 = c1;
matrix->r2c2 = c2;
@ -319,13 +319,13 @@ static inline void dp_matrix2x2_set_row2(const double c1, const double c2, DPMat
// ================ Set Column 1 ================ //
static inline void sp_matrix2x2_set_column1(const float r1, const float r2, SPMatrix2x2* matrix)
static inline void bg_fp32_matrix2x2_set_column1(const float r1, const float r2, BgFP32Matrix2x2* matrix)
{
matrix->r1c1 = r1;
matrix->r2c1 = r2;
}
static inline void dp_matrix2x2_set_column1(const double r1, const double r2, DPMatrix2x2* matrix)
static inline void bg_fp64_matrix2x2_set_column1(const double r1, const double r2, BgFP64Matrix2x2* matrix)
{
matrix->r1c1 = r1;
matrix->r2c1 = r2;
@ -333,13 +333,13 @@ static inline void dp_matrix2x2_set_column1(const double r1, const double r2, DP
// ================ Set Column 2 ================ //
static inline void sp_matrix2x2_set_column2(const float r1, const float r2, SPMatrix2x2* matrix)
static inline void bg_fp32_matrix2x2_set_column2(const float r1, const float r2, BgFP32Matrix2x2* matrix)
{
matrix->r1c2 = r1;
matrix->r2c2 = r2;
}
static inline void dp_matrix2x2_set_column2(const double r1, const double r2, DPMatrix2x2* matrix)
static inline void bg_fp64_matrix2x2_set_column2(const double r1, const double r2, BgFP64Matrix2x2* matrix)
{
matrix->r1c2 = r1;
matrix->r2c2 = r2;
@ -347,7 +347,7 @@ static inline void dp_matrix2x2_set_column2(const double r1, const double r2, DP
// ================ Append scaled =============== //
static inline void sp_matrix2x2_append_scaled(SPMatrix2x2* basic_vector, const SPMatrix2x2* scalable_vector, const float scale)
static inline void bg_fp32_matrix2x2_append_scaled(BgFP32Matrix2x2* basic_vector, const BgFP32Matrix2x2* scalable_vector, const float scale)
{
basic_vector->r1c1 += scalable_vector->r1c1 * scale;
basic_vector->r1c2 += scalable_vector->r1c2 * scale;
@ -356,7 +356,7 @@ static inline void sp_matrix2x2_append_scaled(SPMatrix2x2* basic_vector, const S
basic_vector->r2c2 += scalable_vector->r2c2 * scale;
}
static inline void dp_matrix2x2_append_scaled(DPMatrix2x2* basic_vector, const DPMatrix2x2* scalable_vector, const double scale)
static inline void bg_fp64_matrix2x2_append_scaled(BgFP64Matrix2x2* basic_vector, const BgFP64Matrix2x2* scalable_vector, const double scale)
{
basic_vector->r1c1 += scalable_vector->r1c1 * scale;
basic_vector->r1c2 += scalable_vector->r1c2 * scale;
@ -367,7 +367,7 @@ static inline void dp_matrix2x2_append_scaled(DPMatrix2x2* basic_vector, const D
// ================== Addition ================== //
static inline void sp_matrix2x2_add(const SPMatrix2x2* matrix1, const SPMatrix2x2* matrix2, SPMatrix2x2* sum)
static inline void bg_fp32_matrix2x2_add(const BgFP32Matrix2x2* matrix1, const BgFP32Matrix2x2* matrix2, BgFP32Matrix2x2* sum)
{
sum->r1c1 = matrix1->r1c1 + matrix2->r1c1;
sum->r1c2 = matrix1->r1c2 + matrix2->r1c2;
@ -376,7 +376,7 @@ static inline void sp_matrix2x2_add(const SPMatrix2x2* matrix1, const SPMatrix2x
sum->r2c2 = matrix1->r2c2 + matrix2->r2c2;
}
static inline void dp_matrix2x2_add(const DPMatrix2x2* matrix1, const DPMatrix2x2* matrix2, DPMatrix2x2* sum)
static inline void bg_fp64_matrix2x2_add(const BgFP64Matrix2x2* matrix1, const BgFP64Matrix2x2* matrix2, BgFP64Matrix2x2* sum)
{
sum->r1c1 = matrix1->r1c1 + matrix2->r1c1;
sum->r1c2 = matrix1->r1c2 + matrix2->r1c2;
@ -387,7 +387,7 @@ static inline void dp_matrix2x2_add(const DPMatrix2x2* matrix1, const DPMatrix2x
// ================ Subtraction ================= //
static inline void sp_matrix2x2_subtract(const SPMatrix2x2* minuend, const SPMatrix2x2* subtrahend, SPMatrix2x2* difference)
static inline void bg_fp32_matrix2x2_subtract(const BgFP32Matrix2x2* minuend, const BgFP32Matrix2x2* subtrahend, BgFP32Matrix2x2* difference)
{
difference->r1c1 = minuend->r1c1 - subtrahend->r1c1;
difference->r1c2 = minuend->r1c2 - subtrahend->r1c2;
@ -396,7 +396,7 @@ static inline void sp_matrix2x2_subtract(const SPMatrix2x2* minuend, const SPMat
difference->r2c2 = minuend->r2c2 - subtrahend->r2c2;
}
static inline void dp_matrix2x2_subtract(const DPMatrix2x2* minuend, const DPMatrix2x2* subtrahend, DPMatrix2x2* difference)
static inline void bg_fp64_matrix2x2_subtract(const BgFP64Matrix2x2* minuend, const BgFP64Matrix2x2* subtrahend, BgFP64Matrix2x2* difference)
{
difference->r1c1 = minuend->r1c1 - subtrahend->r1c1;
difference->r1c2 = minuend->r1c2 - subtrahend->r1c2;
@ -407,7 +407,7 @@ static inline void dp_matrix2x2_subtract(const DPMatrix2x2* minuend, const DPMat
// =============== Multiplication =============== //
static inline void sp_matrix2x2_multiply(const SPMatrix2x2* multiplicand, const float multiplier, SPMatrix2x2* product)
static inline void bg_fp32_matrix2x2_multiply(const BgFP32Matrix2x2* multiplicand, const float multiplier, BgFP32Matrix2x2* product)
{
product->r1c1 = multiplicand->r1c1 * multiplier;
product->r1c2 = multiplicand->r1c2 * multiplier;
@ -416,7 +416,7 @@ static inline void sp_matrix2x2_multiply(const SPMatrix2x2* multiplicand, const
product->r2c2 = multiplicand->r2c2 * multiplier;
}
static inline void dp_matrix2x2_multiply(const DPMatrix2x2* multiplicand, const double multiplier, DPMatrix2x2* product)
static inline void bg_fp64_matrix2x2_multiply(const BgFP64Matrix2x2* multiplicand, const double multiplier, BgFP64Matrix2x2* product)
{
product->r1c1 = multiplicand->r1c1 * multiplier;
product->r1c2 = multiplicand->r1c2 * multiplier;
@ -427,7 +427,7 @@ static inline void dp_matrix2x2_multiply(const DPMatrix2x2* multiplicand, const
// ================== Division ================== //
static inline void sp_matrix2x2_divide(const SPMatrix2x2* dividend, const float divisor, SPMatrix2x2* quotient)
static inline void bg_fp32_matrix2x2_divide(const BgFP32Matrix2x2* dividend, const float divisor, BgFP32Matrix2x2* quotient)
{
quotient->r1c1 = dividend->r1c1 / divisor;
quotient->r1c2 = dividend->r1c2 / divisor;
@ -436,7 +436,7 @@ static inline void sp_matrix2x2_divide(const SPMatrix2x2* dividend, const float
quotient->r2c2 = dividend->r2c2 / divisor;
}
static inline void dp_matrix2x2_divide(const DPMatrix2x2* dividend, const double divisor, DPMatrix2x2* quotient)
static inline void bg_fp64_matrix2x2_divide(const BgFP64Matrix2x2* dividend, const double divisor, BgFP64Matrix2x2* quotient)
{
quotient->r1c1 = dividend->r1c1 / divisor;
quotient->r1c2 = dividend->r1c2 / divisor;
@ -447,18 +447,18 @@ static inline void dp_matrix2x2_divide(const DPMatrix2x2* dividend, const double
// ============ Left Vector Product ============= //
static inline void sp_matrix2x2_left_product(const SPVector2* vector, const SPMatrix2x2* matrix, SPVector2* result)
static inline void bg_fp32_matrix2x2_left_product(const BgFP32Vector2* vector, const BgFP32Matrix2x2* matrix, BgFP32Vector2* result)
{
sp_vector2_set_values(
bg_fp32_vector2_set_values(
vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1,
vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2,
result
);
}
static inline void dp_matrix2x2_left_product(const DPVector2* vector, const DPMatrix2x2* matrix, DPVector2* result)
static inline void bg_fp64_matrix2x2_left_product(const BgFP64Vector2* vector, const BgFP64Matrix2x2* matrix, BgFP64Vector2* result)
{
dp_vector2_set_values(
bg_fp64_vector2_set_values(
vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1,
vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2,
result
@ -467,18 +467,18 @@ static inline void dp_matrix2x2_left_product(const DPVector2* vector, const DPMa
// ============ Right Vector Product ============ //
static inline void sp_matrix2x2_right_product(const SPMatrix2x2* matrix, const SPVector2* vector, SPVector2* result)
static inline void bg_fp32_matrix2x2_right_product(const BgFP32Matrix2x2* matrix, const BgFP32Vector2* vector, BgFP32Vector2* result)
{
sp_vector2_set_values(
bg_fp32_vector2_set_values(
matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2,
matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2,
result
);
}
static inline void dp_matrix2x2_right_product(const DPMatrix2x2* matrix, const DPVector2* vector, DPVector2* result)
static inline void bg_fp64_matrix2x2_right_product(const BgFP64Matrix2x2* matrix, const BgFP64Vector2* vector, BgFP64Vector2* result)
{
dp_vector2_set_values(
bg_fp64_vector2_set_values(
matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2,
matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2,
result

View file

@ -7,7 +7,7 @@
// =================== Reset ==================== //
static inline void sp_matrix2x3_reset(SPMatrix2x3* matrix)
static inline void bg_fp32_matrix2x3_reset(BgFP32Matrix2x3* matrix)
{
matrix->r1c1 = 0.0f;
matrix->r1c2 = 0.0f;
@ -19,7 +19,7 @@ static inline void sp_matrix2x3_reset(SPMatrix2x3* matrix)
matrix->r3c2 = 0.0f;
}
static inline void dp_matrix2x3_reset(DPMatrix2x3* matrix)
static inline void bg_fp64_matrix2x3_reset(BgFP64Matrix2x3* matrix)
{
matrix->r1c1 = 0.0;
matrix->r1c2 = 0.0;
@ -33,11 +33,11 @@ static inline void dp_matrix2x3_reset(DPMatrix2x3* matrix)
// ==================== Copy ==================== //
static inline void sp_matrix2x3_copy(const SPMatrix2x3* from, SPMatrix2x3* to)
static inline void bg_fp32_matrix2x3_copy(const BgFP32Matrix2x3* from, BgFP32Matrix2x3* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r1c2;
to->r2c1 = from->r2c1;
to->r2c2 = from->r2c2;
@ -45,7 +45,7 @@ static inline void sp_matrix2x3_copy(const SPMatrix2x3* from, SPMatrix2x3* to)
to->r3c2 = from->r3c2;
}
static inline void dp_matrix2x3_copy(const DPMatrix2x3* from, DPMatrix2x3* to)
static inline void bg_fp64_matrix2x3_copy(const BgFP64Matrix2x3* from, BgFP64Matrix2x3* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r1c2;
@ -59,7 +59,7 @@ static inline void dp_matrix2x3_copy(const DPMatrix2x3* from, DPMatrix2x3* to)
// ============= Copy to twin type ============== //
static inline void sp_matrix2x3_set_from_double(const DPMatrix2x3* from, SPMatrix2x3* to)
static inline void bg_fp32_matrix2x3_set_from_fp64(const BgFP64Matrix2x3* from, BgFP32Matrix2x3* to)
{
to->r1c1 = (float) from->r1c1;
to->r1c2 = (float) from->r1c2;
@ -71,7 +71,7 @@ static inline void sp_matrix2x3_set_from_double(const DPMatrix2x3* from, SPMatri
to->r3c2 = (float) from->r3c2;
}
static inline void dp_matrix2x3_set_from_single(const SPMatrix2x3* from, DPMatrix2x3* to)
static inline void bg_fp64_matrix2x3_set_from_fp32(const BgFP32Matrix2x3* from, BgFP64Matrix2x3* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r1c2;
@ -85,7 +85,7 @@ static inline void dp_matrix2x3_set_from_single(const SPMatrix2x3* from, DPMatri
// =============== Set transposed =============== //
static inline void sp_matrix2x3_set_transposed(const SPMatrix3x2* from, SPMatrix2x3* to)
static inline void bg_fp32_matrix2x3_set_transposed(const BgFP32Matrix3x2* from, BgFP32Matrix2x3* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r2c1;
@ -97,7 +97,7 @@ static inline void sp_matrix2x3_set_transposed(const SPMatrix3x2* from, SPMatrix
to->r3c2 = from->r2c3;
}
static inline void dp_matrix2x3_set_transposed(const DPMatrix3x2* from, DPMatrix2x3* to)
static inline void bg_fp64_matrix2x3_set_transposed(const BgFP64Matrix3x2* from, BgFP64Matrix2x3* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r2c1;
@ -111,7 +111,7 @@ static inline void dp_matrix2x3_set_transposed(const DPMatrix3x2* from, DPMatrix
// =============== Set transposed =============== //
static inline void sp_matrix2x3_transpose_double(const DPMatrix3x2* from, SPMatrix2x3* to)
static inline void bg_fp32_matrix2x3_set_transposed_fp64(const BgFP64Matrix3x2* from, BgFP32Matrix2x3* to)
{
to->r1c1 = (float) from->r1c1;
to->r1c2 = (float) from->r2c1;
@ -123,7 +123,7 @@ static inline void sp_matrix2x3_transpose_double(const DPMatrix3x2* from, SPMatr
to->r3c2 = (float) from->r2c3;
}
static inline void dp_matrix2x3_transpose_single(const SPMatrix3x2* from, DPMatrix2x3* to)
static inline void bg_fp64_matrix2x3_set_transposed_fp32(const BgFP32Matrix3x2* from, BgFP64Matrix2x3* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r2c1;
@ -137,13 +137,13 @@ static inline void dp_matrix2x3_transpose_single(const SPMatrix3x2* from, DPMatr
// ================= Set Row 1 ================== //
static inline void sp_matrix2x3_set_row1(const float c1, const float c2, SPMatrix2x3* matrix)
static inline void bg_fp32_matrix2x3_set_row1(const float c1, const float c2, BgFP32Matrix2x3* matrix)
{
matrix->r1c1 = c1;
matrix->r1c2 = c2;
}
static inline void dp_matrix2x3_set_row1(const double c1, const double c2, DPMatrix2x3* matrix)
static inline void bg_fp64_matrix2x3_set_row1(const double c1, const double c2, BgFP64Matrix2x3* matrix)
{
matrix->r1c1 = c1;
matrix->r1c2 = c2;
@ -151,13 +151,13 @@ static inline void dp_matrix2x3_set_row1(const double c1, const double c2, DPMat
// ================= Set Row 2 ================== //
static inline void sp_matrix2x3_set_row2(const float c1, const float c2, SPMatrix2x3* matrix)
static inline void bg_fp32_matrix2x3_set_row2(const float c1, const float c2, BgFP32Matrix2x3* matrix)
{
matrix->r2c1 = c1;
matrix->r2c2 = c2;
}
static inline void dp_matrix2x3_set_row2(const double c1, const double c2, DPMatrix2x3* matrix)
static inline void bg_fp64_matrix2x3_set_row2(const double c1, const double c2, BgFP64Matrix2x3* matrix)
{
matrix->r2c1 = c1;
matrix->r2c2 = c2;
@ -165,13 +165,13 @@ static inline void dp_matrix2x3_set_row2(const double c1, const double c2, DPMat
// ================= Set Row 3 ================== //
static inline void sp_matrix2x3_set_row3(const float c1, const float c2, SPMatrix2x3* matrix)
static inline void bg_fp32_matrix2x3_set_row3(const float c1, const float c2, BgFP32Matrix2x3* matrix)
{
matrix->r3c1 = c1;
matrix->r3c2 = c2;
}
static inline void dp_matrix2x3_set_row3(const double c1, const double c2, DPMatrix2x3* matrix)
static inline void bg_fp64_matrix2x3_set_row3(const double c1, const double c2, BgFP64Matrix2x3* matrix)
{
matrix->r3c1 = c1;
matrix->r3c2 = c2;
@ -179,14 +179,14 @@ static inline void dp_matrix2x3_set_row3(const double c1, const double c2, DPMat
// ================ Set Column 1 ================ //
static inline void sp_matrix2x3_set_column1(const float r1, const float r2, const float r3, SPMatrix2x3* matrix)
static inline void bg_fp32_matrix2x3_set_column1(const float r1, const float r2, const float r3, BgFP32Matrix2x3* matrix)
{
matrix->r1c1 = r1;
matrix->r2c1 = r2;
matrix->r3c1 = r3;
}
static inline void dp_matrix2x3_set_column1(const double r1, const double r2, const double r3, DPMatrix2x3* matrix)
static inline void bg_fp64_matrix2x3_set_column1(const double r1, const double r2, const double r3, BgFP64Matrix2x3* matrix)
{
matrix->r1c1 = r1;
matrix->r2c1 = r2;
@ -195,14 +195,14 @@ static inline void dp_matrix2x3_set_column1(const double r1, const double r2, co
// ================ Set Column 2 ================ //
static inline void sp_matrix2x3_set_column2(const float r1, const float r2, const float r3, SPMatrix2x3* matrix)
static inline void bg_fp32_matrix2x3_set_column2(const float r1, const float r2, const float r3, BgFP32Matrix2x3* matrix)
{
matrix->r1c2 = r1;
matrix->r2c2 = r2;
matrix->r3c2 = r3;
}
static inline void dp_matrix2x3_set_column2(const double r1, const double r2, const double r3, DPMatrix2x3* matrix)
static inline void bg_fp64_matrix2x3_set_column2(const double r1, const double r2, const double r3, BgFP64Matrix2x3* matrix)
{
matrix->r1c2 = r1;
matrix->r2c2 = r2;
@ -211,7 +211,7 @@ static inline void dp_matrix2x3_set_column2(const double r1, const double r2, co
// ================ Append scaled =============== //
static inline void sp_matrix2x3_append_scaled(SPMatrix2x3* basic_vector, const SPMatrix2x3* scalable_vector, const float scale)
static inline void bg_fp32_matrix2x3_append_scaled(BgFP32Matrix2x3* basic_vector, const BgFP32Matrix2x3* scalable_vector, const float scale)
{
basic_vector->r1c1 += scalable_vector->r1c1 * scale;
basic_vector->r1c2 += scalable_vector->r1c2 * scale;
@ -223,7 +223,7 @@ static inline void sp_matrix2x3_append_scaled(SPMatrix2x3* basic_vector, const S
basic_vector->r3c2 += scalable_vector->r3c2 * scale;
}
static inline void dp_matrix2x3_append_scaled(DPMatrix2x3* basic_vector, const DPMatrix2x3* scalable_vector, const double scale)
static inline void bg_fp64_matrix2x3_append_scaled(BgFP64Matrix2x3* basic_vector, const BgFP64Matrix2x3* scalable_vector, const double scale)
{
basic_vector->r1c1 += scalable_vector->r1c1 * scale;
basic_vector->r1c2 += scalable_vector->r1c2 * scale;
@ -237,7 +237,7 @@ static inline void dp_matrix2x3_append_scaled(DPMatrix2x3* basic_vector, const D
// ================== Addition ================== //
static inline void sp_matrix2x3_add(const SPMatrix2x3* matrix1, const SPMatrix2x3* matrix2, SPMatrix2x3* sum)
static inline void bg_fp32_matrix2x3_add(const BgFP32Matrix2x3* matrix1, const BgFP32Matrix2x3* matrix2, BgFP32Matrix2x3* sum)
{
sum->r1c1 = matrix1->r1c1 + matrix2->r1c1;
sum->r1c2 = matrix1->r1c2 + matrix2->r1c2;
@ -249,7 +249,7 @@ static inline void sp_matrix2x3_add(const SPMatrix2x3* matrix1, const SPMatrix2x
sum->r3c2 = matrix1->r3c2 + matrix2->r3c2;
}
static inline void dp_matrix2x3_add(const DPMatrix2x3* matrix1, const DPMatrix2x3* matrix2, DPMatrix2x3* sum)
static inline void bg_fp64_matrix2x3_add(const BgFP64Matrix2x3* matrix1, const BgFP64Matrix2x3* matrix2, BgFP64Matrix2x3* sum)
{
sum->r1c1 = matrix1->r1c1 + matrix2->r1c1;
sum->r1c2 = matrix1->r1c2 + matrix2->r1c2;
@ -263,7 +263,7 @@ static inline void dp_matrix2x3_add(const DPMatrix2x3* matrix1, const DPMatrix2x
// ================ Subtraction ================= //
static inline void sp_matrix2x3_subtract(const SPMatrix2x3* minuend, const SPMatrix2x3* subtrahend, SPMatrix2x3* difference)
static inline void bg_fp32_matrix2x3_subtract(const BgFP32Matrix2x3* minuend, const BgFP32Matrix2x3* subtrahend, BgFP32Matrix2x3* difference)
{
difference->r1c1 = minuend->r1c1 - subtrahend->r1c1;
difference->r1c2 = minuend->r1c2 - subtrahend->r1c2;
@ -275,7 +275,7 @@ static inline void sp_matrix2x3_subtract(const SPMatrix2x3* minuend, const SPMat
difference->r3c2 = minuend->r3c2 - subtrahend->r3c2;
}
static inline void dp_matrix2x3_subtract(const DPMatrix2x3* minuend, const DPMatrix2x3* subtrahend, DPMatrix2x3* difference)
static inline void bg_fp64_matrix2x3_subtract(const BgFP64Matrix2x3* minuend, const BgFP64Matrix2x3* subtrahend, BgFP64Matrix2x3* difference)
{
difference->r1c1 = minuend->r1c1 - subtrahend->r1c1;
difference->r1c2 = minuend->r1c2 - subtrahend->r1c2;
@ -289,7 +289,7 @@ static inline void dp_matrix2x3_subtract(const DPMatrix2x3* minuend, const DPMat
// =============== Multiplication =============== //
static inline void sp_matrix2x3_multiply(const SPMatrix2x3* multiplicand, const float multiplier, SPMatrix2x3* product)
static inline void bg_fp32_matrix2x3_multiply(const BgFP32Matrix2x3* multiplicand, const float multiplier, BgFP32Matrix2x3* product)
{
product->r1c1 = multiplicand->r1c1 * multiplier;
product->r1c2 = multiplicand->r1c2 * multiplier;
@ -301,7 +301,7 @@ static inline void sp_matrix2x3_multiply(const SPMatrix2x3* multiplicand, const
product->r3c2 = multiplicand->r3c2 * multiplier;
}
static inline void dp_matrix2x3_multiply(const DPMatrix2x3* multiplicand, const double multiplier, DPMatrix2x3* product)
static inline void bg_fp64_matrix2x3_multiply(const BgFP64Matrix2x3* multiplicand, const double multiplier, BgFP64Matrix2x3* product)
{
product->r1c1 = multiplicand->r1c1 * multiplier;
product->r1c2 = multiplicand->r1c2 * multiplier;
@ -315,7 +315,7 @@ static inline void dp_matrix2x3_multiply(const DPMatrix2x3* multiplicand, const
// ================== Division ================== //
static inline void sp_matrix2x3_divide(const SPMatrix2x3* dividend, const float divisor, SPMatrix2x3* quotient)
static inline void bg_fp32_matrix2x3_divide(const BgFP32Matrix2x3* dividend, const float divisor, BgFP32Matrix2x3* quotient)
{
quotient->r1c1 = dividend->r1c1 / divisor;
quotient->r1c2 = dividend->r1c2 / divisor;
@ -327,7 +327,7 @@ static inline void sp_matrix2x3_divide(const SPMatrix2x3* dividend, const float
quotient->r3c2 = dividend->r3c2 / divisor;
}
static inline void dp_matrix2x3_divide(const DPMatrix2x3* dividend, const double divisor, DPMatrix2x3* quotient)
static inline void bg_fp64_matrix2x3_divide(const BgFP64Matrix2x3* dividend, const double divisor, BgFP64Matrix2x3* quotient)
{
quotient->r1c1 = dividend->r1c1 / divisor;
quotient->r1c2 = dividend->r1c2 / divisor;
@ -341,13 +341,13 @@ static inline void dp_matrix2x3_divide(const DPMatrix2x3* dividend, const double
// ============ Left Vector Product ============= //
static inline void sp_matrix2x3_left_product(const SPVector3* vector, const SPMatrix2x3* matrix, SPVector2* result)
static inline void bg_fp32_matrix2x3_left_product(const BgFP32Vector3* vector, const BgFP32Matrix2x3* matrix, BgFP32Vector2* result)
{
result->x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1;
result->x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2;
}
static inline void dp_matrix2x3_left_product(const DPVector3* vector, const DPMatrix2x3* matrix, DPVector2* result)
static inline void bg_fp64_matrix2x3_left_product(const BgFP64Vector3* vector, const BgFP64Matrix2x3* matrix, BgFP64Vector2* result)
{
result->x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1;
result->x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2;
@ -355,14 +355,14 @@ static inline void dp_matrix2x3_left_product(const DPVector3* vector, const DPMa
// ============ Right Vector Product ============ //
static inline void sp_matrix2x3_right_product(const SPMatrix2x3* matrix, const SPVector2* vector, SPVector3* result)
static inline void bg_fp32_matrix2x3_right_product(const BgFP32Matrix2x3* matrix, const BgFP32Vector2* vector, BgFP32Vector3* result)
{
result->x1 = matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2;
result->x2 = matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2;
result->x3 = matrix->r3c1 * vector->x1 + matrix->r3c2 * vector->x2;
}
static inline void dp_matrix2x3_right_product(const DPMatrix2x3* matrix, const DPVector2* vector, DPVector3* result)
static inline void bg_fp64_matrix2x3_right_product(const BgFP64Matrix2x3* matrix, const BgFP64Vector2* vector, BgFP64Vector3* result)
{
result->x1 = matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2;
result->x2 = matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2;

View file

@ -7,7 +7,7 @@
// =================== Reset ==================== //
static inline void sp_matrix3x2_reset(SPMatrix3x2* matrix)
static inline void bg_fp32_matrix3x2_reset(BgFP32Matrix3x2* matrix)
{
matrix->r1c1 = 0.0f;
matrix->r1c2 = 0.0f;
@ -18,7 +18,7 @@ static inline void sp_matrix3x2_reset(SPMatrix3x2* matrix)
matrix->r2c3 = 0.0f;
}
static inline void dp_matrix3x2_reset(DPMatrix3x2* matrix)
static inline void bg_fp64_matrix3x2_reset(BgFP64Matrix3x2* matrix)
{
matrix->r1c1 = 0.0;
matrix->r1c2 = 0.0;
@ -31,7 +31,7 @@ static inline void dp_matrix3x2_reset(DPMatrix3x2* matrix)
// ============= Set from twin type ============= //
static inline void sp_matrix3x2_set_from_double(const DPMatrix3x2* from, SPMatrix3x2* to)
static inline void bg_fp32_matrix3x2_set_from_fp64(const BgFP64Matrix3x2* from, BgFP32Matrix3x2* to)
{
to->r1c1 = (float) from->r1c1;
to->r1c2 = (float) from->r1c2;
@ -42,7 +42,7 @@ static inline void sp_matrix3x2_set_from_double(const DPMatrix3x2* from, SPMatri
to->r2c3 = (float) from->r2c3;
}
static inline void dp_matrix3x2_set_from_single(const SPMatrix3x2* from, DPMatrix3x2* to)
static inline void bg_fp64_matrix3x2_set_from_fp32(const BgFP32Matrix3x2* from, BgFP64Matrix3x2* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r1c2;
@ -55,7 +55,7 @@ static inline void dp_matrix3x2_set_from_single(const SPMatrix3x2* from, DPMatri
// =============== Set transposed =============== //
static inline void sp_matrix3x2_set_transposed(const SPMatrix2x3* from, SPMatrix3x2* to)
static inline void bg_fp32_matrix3x2_set_transposed(const BgFP32Matrix2x3* from, BgFP32Matrix3x2* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r2c1;
@ -66,7 +66,7 @@ static inline void sp_matrix3x2_set_transposed(const SPMatrix2x3* from, SPMatrix
to->r2c3 = from->r3c2;
}
static inline void dp_matrix3x2_set_transposed(const DPMatrix2x3* from, DPMatrix3x2* to)
static inline void bg_fp64_matrix3x2_set_transposed(const BgFP64Matrix2x3* from, BgFP64Matrix3x2* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r2c1;
@ -79,7 +79,7 @@ static inline void dp_matrix3x2_set_transposed(const DPMatrix2x3* from, DPMatrix
// =============== Set transposed =============== //
static inline void sp_matrix3x2_transpose_double(const DPMatrix2x3* from, SPMatrix3x2* to)
static inline void bg_fp32_matrix3x2_set_transposed_fp64(const BgFP64Matrix2x3* from, BgFP32Matrix3x2* to)
{
to->r1c1 = (float) from->r1c1;
to->r1c2 = (float) from->r2c1;
@ -90,7 +90,7 @@ static inline void sp_matrix3x2_transpose_double(const DPMatrix2x3* from, SPMatr
to->r2c3 = (float) from->r3c2;
}
static inline void dp_matrix3x2_transpose_single(const SPMatrix2x3* from, DPMatrix3x2* to)
static inline void bg_fp64_matrix3x2_set_transposed_fp32(const BgFP32Matrix2x3* from, BgFP64Matrix3x2* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r2c1;
@ -103,14 +103,14 @@ static inline void dp_matrix3x2_transpose_single(const SPMatrix2x3* from, DPMatr
// ================= Set Row 1 ================== //
static inline void sp_matrix3x2_set_row1(const float c1, const float c2, const float c3, SPMatrix3x2* matrix)
static inline void bg_fp32_matrix3x2_set_row1(const float c1, const float c2, const float c3, BgFP32Matrix3x2* matrix)
{
matrix->r1c1 = c1;
matrix->r1c2 = c2;
matrix->r1c3 = c3;
}
static inline void dp_matrix3x2_set_row1(const double c1, const double c2, const double c3, DPMatrix3x2* matrix)
static inline void bg_fp64_matrix3x2_set_row1(const double c1, const double c2, const double c3, BgFP64Matrix3x2* matrix)
{
matrix->r1c1 = c1;
matrix->r1c2 = c2;
@ -119,14 +119,14 @@ static inline void dp_matrix3x2_set_row1(const double c1, const double c2, const
// ================= Set Row 2 ================== //
static inline void sp_matrix3x2_set_row2(const float c1, const float c2, const float c3, SPMatrix3x2* matrix)
static inline void bg_fp32_matrix3x2_set_row2(const float c1, const float c2, const float c3, BgFP32Matrix3x2* matrix)
{
matrix->r2c1 = c1;
matrix->r2c2 = c2;
matrix->r2c3 = c3;
}
static inline void dp_matrix3x2_set_row2(const double c1, const double c2, const double c3, DPMatrix3x2* matrix)
static inline void bg_fp64_matrix3x2_set_row2(const double c1, const double c2, const double c3, BgFP64Matrix3x2* matrix)
{
matrix->r2c1 = c1;
matrix->r2c2 = c2;
@ -135,13 +135,13 @@ static inline void dp_matrix3x2_set_row2(const double c1, const double c2, const
// ================ Set Column 1 ================ //
static inline void sp_matrix3x2_set_column1(const float r1, const float r2, SPMatrix3x2* matrix)
static inline void bg_fp32_matrix3x2_set_column1(const float r1, const float r2, BgFP32Matrix3x2* matrix)
{
matrix->r1c1 = r1;
matrix->r2c1 = r2;
}
static inline void dp_matrix3x2_set_column1(const double r1, const double r2, DPMatrix3x2* matrix)
static inline void bg_fp64_matrix3x2_set_column1(const double r1, const double r2, BgFP64Matrix3x2* matrix)
{
matrix->r1c1 = r1;
matrix->r2c1 = r2;
@ -149,13 +149,13 @@ static inline void dp_matrix3x2_set_column1(const double r1, const double r2, DP
// ================ Set Column 2 ================ //
static inline void sp_matrix3x2_set_column2(const float r1, const float r2, SPMatrix3x2* matrix)
static inline void bg_fp32_matrix3x2_set_column2(const float r1, const float r2, BgFP32Matrix3x2* matrix)
{
matrix->r1c2 = r1;
matrix->r2c2 = r2;
}
static inline void dp_matrix3x2_set_column2(const double r1, const double r2, DPMatrix3x2* matrix)
static inline void bg_fp64_matrix3x2_set_column2(const double r1, const double r2, BgFP64Matrix3x2* matrix)
{
matrix->r1c2 = r1;
matrix->r2c2 = r2;
@ -163,13 +163,13 @@ static inline void dp_matrix3x2_set_column2(const double r1, const double r2, DP
// ================ Set Column 3 ================ //
static inline void sp_matrix3x2_set_column3(const float r1, const float r2, SPMatrix3x2* matrix)
static inline void bg_fp32_matrix3x2_set_column3(const float r1, const float r2, BgFP32Matrix3x2* matrix)
{
matrix->r1c3 = r1;
matrix->r2c3 = r2;
}
static inline void dp_matrix3x2_set_column3(const double r1, const double r2, DPMatrix3x2* matrix)
static inline void bg_fp64_matrix3x2_set_column3(const double r1, const double r2, BgFP64Matrix3x2* matrix)
{
matrix->r1c3 = r1;
matrix->r2c3 = r2;
@ -177,7 +177,7 @@ static inline void dp_matrix3x2_set_column3(const double r1, const double r2, DP
// ================ Append scaled =============== //
static inline void sp_matrix3x2_append_scaled(SPMatrix3x2* basic_vector, const SPMatrix3x2* scalable_vector, const float scale)
static inline void bg_fp32_matrix3x2_append_scaled(BgFP32Matrix3x2* basic_vector, const BgFP32Matrix3x2* scalable_vector, const float scale)
{
basic_vector->r1c1 += scalable_vector->r1c1 * scale;
basic_vector->r1c2 += scalable_vector->r1c2 * scale;
@ -188,7 +188,7 @@ static inline void sp_matrix3x2_append_scaled(SPMatrix3x2* basic_vector, const S
basic_vector->r2c3 += scalable_vector->r2c3 * scale;
}
static inline void dp_matrix3x2_append_scaled(DPMatrix3x2* basic_vector, const DPMatrix3x2* scalable_vector, const double scale)
static inline void bg_fp64_matrix3x2_append_scaled(BgFP64Matrix3x2* basic_vector, const BgFP64Matrix3x2* scalable_vector, const double scale)
{
basic_vector->r1c1 += scalable_vector->r1c1 * scale;
basic_vector->r1c2 += scalable_vector->r1c2 * scale;
@ -201,7 +201,7 @@ static inline void dp_matrix3x2_append_scaled(DPMatrix3x2* basic_vector, const D
// ================== Addition ================== //
static inline void sp_matrix3x2_add(const SPMatrix3x2* matrix1, const SPMatrix3x2* matrix2, SPMatrix3x2* sum)
static inline void bg_fp32_matrix3x2_add(const BgFP32Matrix3x2* matrix1, const BgFP32Matrix3x2* matrix2, BgFP32Matrix3x2* sum)
{
sum->r1c1 = matrix1->r1c1 + matrix2->r1c1;
sum->r1c2 = matrix1->r1c2 + matrix2->r1c2;
@ -212,7 +212,7 @@ static inline void sp_matrix3x2_add(const SPMatrix3x2* matrix1, const SPMatrix3x
sum->r2c3 = matrix1->r2c3 + matrix2->r2c3;
}
static inline void dp_matrix3x2_add(const DPMatrix3x2* matrix1, const DPMatrix3x2* matrix2, DPMatrix3x2* sum)
static inline void bg_fp64_matrix3x2_add(const BgFP64Matrix3x2* matrix1, const BgFP64Matrix3x2* matrix2, BgFP64Matrix3x2* sum)
{
sum->r1c1 = matrix1->r1c1 + matrix2->r1c1;
sum->r1c2 = matrix1->r1c2 + matrix2->r1c2;
@ -225,7 +225,7 @@ static inline void dp_matrix3x2_add(const DPMatrix3x2* matrix1, const DPMatrix3x
// ================ Subtraction ================= //
static inline void sp_matrix3x2_subtract(const SPMatrix3x2* minuend, const SPMatrix3x2* subtrahend, SPMatrix3x2* difference)
static inline void bg_fp32_matrix3x2_subtract(const BgFP32Matrix3x2* minuend, const BgFP32Matrix3x2* subtrahend, BgFP32Matrix3x2* difference)
{
difference->r1c1 = minuend->r1c1 - subtrahend->r1c1;
difference->r1c2 = minuend->r1c2 - subtrahend->r1c2;
@ -236,7 +236,7 @@ static inline void sp_matrix3x2_subtract(const SPMatrix3x2* minuend, const SPMat
difference->r2c3 = minuend->r2c3 - subtrahend->r2c3;
}
static inline void dp_matrix3x2_subtract(const DPMatrix3x2* minuend, const DPMatrix3x2* subtrahend, DPMatrix3x2* difference)
static inline void bg_fp64_matrix3x2_subtract(const BgFP64Matrix3x2* minuend, const BgFP64Matrix3x2* subtrahend, BgFP64Matrix3x2* difference)
{
difference->r1c1 = minuend->r1c1 - subtrahend->r1c1;
difference->r1c2 = minuend->r1c2 - subtrahend->r1c2;
@ -249,7 +249,7 @@ static inline void dp_matrix3x2_subtract(const DPMatrix3x2* minuend, const DPMat
// =============== Multiplication =============== //
static inline void sp_matrix3x2_multiply(const SPMatrix3x2* multiplicand, const float multiplier, SPMatrix3x2* product)
static inline void bg_fp32_matrix3x2_multiply(const BgFP32Matrix3x2* multiplicand, const float multiplier, BgFP32Matrix3x2* product)
{
product->r1c1 = multiplicand->r1c1 * multiplier;
product->r1c2 = multiplicand->r1c2 * multiplier;
@ -260,7 +260,7 @@ static inline void sp_matrix3x2_multiply(const SPMatrix3x2* multiplicand, const
product->r2c3 = multiplicand->r2c3 * multiplier;
}
static inline void dp_matrix3x2_multiply(const DPMatrix3x2* multiplicand, const double multiplier, DPMatrix3x2* product)
static inline void bg_fp64_matrix3x2_multiply(const BgFP64Matrix3x2* multiplicand, const double multiplier, BgFP64Matrix3x2* product)
{
product->r1c1 = multiplicand->r1c1 * multiplier;
product->r1c2 = multiplicand->r1c2 * multiplier;
@ -273,7 +273,7 @@ static inline void dp_matrix3x2_multiply(const DPMatrix3x2* multiplicand, const
// ================== Division ================== //
static inline void sp_matrix3x2_divide(const SPMatrix3x2* dividend, const float divisor, SPMatrix3x2* quotient)
static inline void bg_fp32_matrix3x2_divide(const BgFP32Matrix3x2* dividend, const float divisor, BgFP32Matrix3x2* quotient)
{
quotient->r1c1 = dividend->r1c1 / divisor;
quotient->r1c2 = dividend->r1c2 / divisor;
@ -284,7 +284,7 @@ static inline void sp_matrix3x2_divide(const SPMatrix3x2* dividend, const float
quotient->r2c3 = dividend->r2c3 / divisor;
}
static inline void dp_matrix3x2_divide(const DPMatrix3x2* dividend, const double divisor, DPMatrix3x2* quotient)
static inline void bg_fp64_matrix3x2_divide(const BgFP64Matrix3x2* dividend, const double divisor, BgFP64Matrix3x2* quotient)
{
quotient->r1c1 = dividend->r1c1 / divisor;
quotient->r1c2 = dividend->r1c2 / divisor;
@ -297,14 +297,14 @@ static inline void dp_matrix3x2_divide(const DPMatrix3x2* dividend, const double
// ============ Left Vector Product ============= //
static inline void sp_matrix3x2_left_product(const SPVector2* vector, const SPMatrix3x2* matrix, SPVector3* result)
static inline void bg_fp32_matrix3x2_left_product(const BgFP32Vector2* vector, const BgFP32Matrix3x2* matrix, BgFP32Vector3* result)
{
result->x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1;
result->x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2;
result->x3 = vector->x1 * matrix->r1c3 + vector->x2 * matrix->r2c3;
}
static inline void dp_matrix3x2_left_product(const DPVector2* vector, const DPMatrix3x2* matrix, DPVector3* result)
static inline void bg_fp64_matrix3x2_left_product(const BgFP64Vector2* vector, const BgFP64Matrix3x2* matrix, BgFP64Vector3* result)
{
result->x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1;
result->x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2;
@ -313,13 +313,13 @@ static inline void dp_matrix3x2_left_product(const DPVector2* vector, const DPMa
// ============ Right Vector Product ============ //
static inline void sp_matrix3x2_right_product(const SPMatrix3x2* matrix, const SPVector3* vector, SPVector2* result)
static inline void bg_fp32_matrix3x2_right_product(const BgFP32Matrix3x2* matrix, const BgFP32Vector3* vector, BgFP32Vector2* result)
{
result->x1 = matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2 + matrix->r1c3 * vector->x3;
result->x2 = matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2 + matrix->r2c3 * vector->x3;
}
static inline void dp_matrix3x2_right_product(const DPMatrix3x2* matrix, const DPVector3* vector, DPVector2* result)
static inline void bg_fp64_matrix3x2_right_product(const BgFP64Matrix3x2* matrix, const BgFP64Vector3* vector, BgFP64Vector2* result)
{
result->x1 = matrix->r1c1 * vector->x1 + matrix->r1c2 * vector->x2 + matrix->r1c3 * vector->x3;
result->x2 = matrix->r2c1 * vector->x1 + matrix->r2c2 * vector->x2 + matrix->r2c3 * vector->x3;

View file

@ -2,11 +2,11 @@
// ================= Inversion ================== //
int sp_matrix3x3_invert(SPMatrix3x3* matrix)
int bg_fp32_matrix3x3_invert(BgFP32Matrix3x3* matrix)
{
const float determinant = sp_matrix3x3_get_determinant(matrix);
const float determinant = bg_fp32_matrix3x3_get_determinant(matrix);
if (-SP_EPSYLON <= determinant && determinant <= SP_EPSYLON) {
if (-BG_FP32_EPSYLON <= determinant && determinant <= BG_FP32_EPSYLON) {
return 0;
}
@ -37,11 +37,11 @@ int sp_matrix3x3_invert(SPMatrix3x3* matrix)
return 1;
}
int dp_matrix3x3_invert(DPMatrix3x3* matrix)
int bg_fp64_matrix3x3_invert(BgFP64Matrix3x3* matrix)
{
const double determinant = dp_matrix3x3_get_determinant(matrix);
const double determinant = bg_fp64_matrix3x3_get_determinant(matrix);
if (-DP_EPSYLON <= determinant && determinant <= DP_EPSYLON) {
if (-BG_FP64_EPSYLON <= determinant && determinant <= BG_FP64_EPSYLON) {
return 0;
}
@ -74,11 +74,11 @@ int dp_matrix3x3_invert(DPMatrix3x3* matrix)
// ================ Make Inverted =============== //
int sp_matrix3x3_set_inverted(const SPMatrix3x3* matrix, SPMatrix3x3* result)
int bg_fp32_matrix3x3_set_inverted(const BgFP32Matrix3x3* matrix, BgFP32Matrix3x3* result)
{
const float determinant = sp_matrix3x3_get_determinant(matrix);
const float determinant = bg_fp32_matrix3x3_get_determinant(matrix);
if (-SP_EPSYLON <= determinant && determinant <= SP_EPSYLON) {
if (-BG_FP32_EPSYLON <= determinant && determinant <= BG_FP32_EPSYLON) {
return 0;
}
@ -109,11 +109,11 @@ int sp_matrix3x3_set_inverted(const SPMatrix3x3* matrix, SPMatrix3x3* result)
return 1;
}
int dp_matrix3x3_set_inverted(const DPMatrix3x3* matrix, DPMatrix3x3* result)
int bg_fp64_matrix3x3_set_inverted(const BgFP64Matrix3x3* matrix, BgFP64Matrix3x3* result)
{
const double determinant = dp_matrix3x3_get_determinant(matrix);
const double determinant = bg_fp64_matrix3x3_get_determinant(matrix);
if (-DP_EPSYLON <= determinant && determinant <= DP_EPSYLON) {
if (-BG_FP64_EPSYLON <= determinant && determinant <= BG_FP64_EPSYLON) {
return 0;
}

View file

Internal server error - Personal Git Server: Beyond coding. We Forge.

500

Internal server error

Forgejo version: 11.0.1+gitea-1.22.0

@ -6,7 +6,7 @@
// =================== Reset ==================== //
static inline void sp_matrix3x3_reset(SPMatrix3x3* matrix)
static inline void bg_fp32_matrix3x3_reset(BgFP32Matrix3x3* matrix)
{
matrix->r1c1 = 0.0f;
matrix->r1c2 = 0.0f;
@ -21,7 +21,7 @@ static inline void sp_matrix3x3_reset(SPMatrix3x3* matrix)
matrix->r3c3 = 0.0f;
}
static inline void dp_matrix3x3_reset(DPMatrix3x3* matrix)
static inline void bg_fp64_matrix3x3_reset(BgFP64Matrix3x3* matrix)
{
matrix->r1c1 = 0.0;
matrix->r1c2 = 0.0;
@ -38,7 +38,7 @@ static inline void dp_matrix3x3_reset(DPMatrix3x3* matrix)
// ================== Identity ================== //
static inline void sp_matrix3x3_make_identity(SPMatrix3x3* matrix)
static inline void bg_fp32_matrix3x3_set_to_identity(BgFP32Matrix3x3* matrix)
{
matrix->r1c1 = 1.0f;
matrix->r1c2 = 0.0f;
@ -53,7 +53,7 @@ static inline void sp_matrix3x3_make_identity(SPMatrix3x3* matrix)
matrix->r3c3 = 1.0f;
}
static inline void dp_matrix3x3_make_identity(DPMatrix3x3* matrix)
static inline void bg_fp64_matrix3x3_set_to_identity(BgFP64Matrix3x3* matrix)
{
matrix->r1c1 = 1.0;
matrix->r1c2 = 0.0;
@ -70,7 +70,7 @@ static inline void dp_matrix3x3_make_identity(DPMatrix3x3* matrix)
// ================ Make Diagonal =============== //
static inline void sp_matrix3x3_make_diagonal(const float d1, const float d2, const float d3, SPMatrix3x3* matrix)
static inline void bg_fp32_matrix3x3_set_to_diagonal(const float d1, const float d2, const float d3, BgFP32Matrix3x3* matrix)
{
matrix->r1c1 = d1;
matrix->r1c2 = 0.0f;
@ -85,7 +85,7 @@ static inline void sp_matrix3x3_make_diagonal(const float d1, const float d2, co
matrix->r3c3 = d2;
}
static inline void dp_matrix3x3_make_diagonal(const double d1, const double d2, const double d3, DPMatrix3x3* matrix)
static inline void bg_fp64_matrix3x3_set_to_diagonal(const double d1, const double d2, const double d3, BgFP64Matrix3x3* matrix)
{
matrix->r1c1 = d1;
matrix->r1c2 = 0.0;
@ -102,7 +102,7 @@ static inline void dp_matrix3x3_make_diagonal(const double d1, const double d2,
// ==================== Copy ==================== //
static inline void sp_matrix3x3_copy(const SPMatrix3x3* from, SPMatrix3x3* to)
static inline void bg_fp32_matrix3x3_copy(const BgFP32Matrix3x3* from, BgFP32Matrix3x3* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r1c2;
@ -117,7 +117,7 @@ static inline void sp_matrix3x3_copy(const SPMatrix3x3* from, SPMatrix3x3* to)
to->r3c3 = from->r3c3;
}
static inline void dp_matrix3x3_copy(const DPMatrix3x3* from, DPMatrix3x3* to)
static inline void bg_fp64_matrix3x3_copy(const BgFP64Matrix3x3* from, BgFP64Matrix3x3* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r1c2;
@ -134,22 +134,22 @@ static inline void dp_matrix3x3_copy(const DPMatrix3x3* from, DPMatrix3x3* to)
// ============= Set from twin type ============= //
static inline void sp_matrix3x3_set_from_double(const DPMatrix3x3* from, SPMatrix3x3* to)
static inline void bg_fp32_matrix3x3_set_from_fp64(const BgFP64Matrix3x3* from, BgFP32Matrix3x3* to)
{
to->r1c1 = (float)from->r1c1;
to->r1c2 = (float)from->r1c2;
to->r1c3 = (float)from->r1c3;
to->r1c1 = (float) from->r1c1;
to->r1c2 = (float) from->r1c2;
to->r1c3 = (float) from->r1c3;
to->r2c1 = (float)from->r2c1;
to->r2c2 = (float)from->r2c2;
to->r2c3 = (float)from->r2c3;
to->r2c1 = (float) from->r2c1;
to->r2c2 = (float) from->r2c2;
to->r2c3 = (float) from->r2c3;
to->r3c1 = (float)from->r3c1;
to->r3c2 = (float)from->r3c2;
to->r3c3 = (float)from->r3c3;
to->r3c1 = (float) from->r3c1;
to->r3c2 = (float) from->r3c2;
to->r3c3 = (float) from->r3c3;
}
static inline void dp_matrix3x3_set_from_single(const SPMatrix3x3* from, DPMatrix3x3* to)
static inline void bg_fp64_matrix3x3_set_from_fp32(const BgFP32Matrix3x3* from, BgFP64Matrix3x3* to)
{
to->r1c1 = from->r1c1;
to->r1c2 = from->r1c2;
@ -166,14 +166,14 @@ static inline void dp_matrix3x3_set_from_single(const SPMatrix3x3* from, DPMatri
// ================ Determinant ================= //
static inline float sp_matrix3x3_get_determinant(const SPMatrix3x3* matrix)
static inline float bg_fp32_matrix3x3_get_determinant(const BgFP32Matrix3x3* matrix)
{
return matrix->r1c1 * (matrix->r2c2 * matrix->r3c3 - matrix->r2c3 * matrix->r3c2)
+ matrix->r1c2 * (matrix->r2c3 * matrix->r3c1 - matrix->r2c1 * matrix->r3c3)
+ matrix->r1c3 * (matrix->r2c1 * matrix->r3c2 - matrix->r2c2 * matrix->r3c1);
}
static inline double dp_matrix3x3_get_determinant(const DPMatrix3x3* matrix)
static inline double bg_fp64_matrix3x3_get_determinant(const BgFP64Matrix3x3* matrix)
{
return matrix->r1c1 * (matrix->r2c2 * matrix->r3c3 - matrix->r2c3 * matrix->r3c2)
+ matrix->r1c2 * (matrix->r2c3 * matrix->r3c1 - matrix->r2c1 * matrix->r3c3)
@ -182,29 +182,29 @@ static inline double dp_matrix3x3_get_determinant(const DPMatrix3x3* matrix)
// ================== Singular ================== //
static inline int sp_matrix3x3_is_singular(const SPMatrix3x3* matrix)
static inline int bg_fp32_matrix3x3_is_singular(const BgFP32Matrix3x3* matrix)
{
const float determinant = sp_matrix3x3_get_determinant(matrix);
const float determinant = bg_fp32_matrix3x3_get_determinant(matrix);
return -SP_EPSYLON <= determinant && determinant <= SP_EPSYLON;
return -BG_FP32_EPSYLON <= determinant && determinant <= BG_FP32_EPSYLON;
}
static inline int dp_matrix3x3_is_singular(const DPMatrix3x3* matrix)
static inline int bg_fp64_matrix3x3_is_singular(const BgFP64Matrix3x3* matrix)
{
const double determinant = dp_matrix3x3_get_determinant(matrix);
const double determinant = bg_fp64_matrix3x3_get_determinant(matrix);
return -DP_EPSYLON <= determinant && determinant <= DP_EPSYLON;
return -BG_FP64_EPSYLON <= determinant && determinant <= BG_FP64_EPSYLON;
}
// ================= Inversion ================== //
int sp_matrix3x3_invert(SPMatrix3x3* matrix);
int bg_fp32_matrix3x3_invert(BgFP32Matrix3x3* matrix);
int dp_matrix3x3_invert(DPMatrix3x3* matrix);
int bg_fp64_matrix3x3_invert(BgFP64Matrix3x3* matrix);
// =============== Transposition ================ //
static inline void sp_matrix3x3_transpose(SPMatrix3x3* matrix)
static inline void bg_fp32_matrix3x3_transpose(BgFP32Matrix3x3* matrix)
{
float tmp = matrix->r1c2;
matrix->r1c2 = matrix->r2c1;
@ -219,7 +219,7 @@ static inline void sp_matrix3x3_transpose(SPMatrix3x3* matrix)
matrix->r3c2 = tmp;
}
static inline void dp_matrix3x3_transpose(DPMatrix3x3* matrix)
static inline void bg_fp64_matrix3x3_transpose(BgFP64Matrix3x3* matrix)
{
double tmp = matrix->r1c2;
matrix->r1c2 = matrix->r2c1;
@ -236,16 +236,16 @@ static inline void dp_matrix3x3_transpose(DPMatrix3x3* matrix)
// ================ Make Inverted =============== //
int sp_matrix3x3_set_inverted(const SPMatrix3x3* matrix, SPMatrix3x3* result);
int bg_fp32_matrix3x3_set_inverted(const BgFP32Matrix3x3* matrix, BgFP32Matrix3x3* result);
int dp_matrix3x3_set_inverted(const DPMatrix3x3* matrix, DPMatrix3x3* result);
int bg_fp64_matrix3x3_set_inverted(const BgFP64Matrix3x3* matrix, BgFP64Matrix3x3* result);
// =============== Make Transposed ============== //
static inline void sp_matrix3x3_make_transposed(const SPMatrix3x3* matrix, SPMatrix3x3* result)
static inline void bg_fp32_matrix3x3_set_transposed(const BgFP32Matrix3x3* matrix, BgFP32Matrix3x3* result)
{
if (matrix == result) {
sp_matrix3x3_transpose(result);
bg_fp32_matrix3x3_transpose(result);
return;
}
@ -262,10 +262,10 @@ static inline void sp_matrix3x3_make_transposed(const SPMatrix3x3* matrix, SPMat
result->r3c3 = matrix->r3c3;
}
static inline void dp_matrix3x3_make_transposed(const DPMatrix3x3* matrix, DPMatrix3x3* result)
static inline void bg_fp64_matrix3x3_set_transposed(const BgFP64Matrix3x3* matrix, BgFP64Matrix3x3* result)
{
if (matrix == result) {
dp_matrix3x3_transpose(result);
bg_fp64_matrix3x3_transpose(result);
return;
}
@ -284,14 +284,14 @@ static inline void dp_matrix3x3_make_transposed(const DPMatrix3x3* matrix, DPMat
// ================= Set Row 1 ================== //
static inline void sp_matrix3x3_set_row1(const float c1, const float c2, const float c3, SPMatrix3x3* matrix)
static inline void bg_fp32_matrix3x3_set_row1(const float c1, const float c2, const float c3, BgFP32Matrix3x3* matrix)
{
matrix->r1c1 = c1;
matrix->r1c2 = c2;
matrix->r1c3 = c3;
}
static inline void dp_matrix3x3_set_row1(const double c1, const double c2, const double c3, DPMatrix3x3* matrix)
static inline void bg_fp64_matrix3x3_set_row1(const double c1, const double c2, const double c3, BgFP64Matrix3x3* matrix)
{
matrix->r1c1 = c1;
matrix->r1c2 = c2;
@ -300,14 +300,14 @@ static inline void dp_matrix3x3_set_row1(const double c1, const double c2, const
// ================= Set Row 2 ================== //
static inline void sp_matrix3x3_set_row2(const float c1, const float c2, const float c3, SPMatrix3x3* matrix)
static inline void bg_fp32_matrix3x3_set_row2(const float c1, const float c2, const float c3, BgFP32Matrix3x3* matrix)
{
matrix->r2c1 = c1;
matrix->r2c2 = c2;
matrix->r2c3 = c3;
}
static inline void dp_matrix3x3_set_row2(const double c1, const double c2, const double c3, DPMatrix3x3* matrix)
static inline void bg_fp64_matrix3x3_set_row2(const double c1, const double c2, const double c3, BgFP64Matrix3x3* matrix)
{
matrix->r2c1 = c1;
matrix->r2c2 = c2;
@ -316,14 +316,14 @@ static inline void dp_matrix3x3_set_row2(const double c1, const double c2, const
// ================= Set Row 3 ================== //
static inline void sp_matrix3x3_set_row3(const float c1, const float c2, const float c3, SPMatrix3x3* matrix)
static inline void bg_fp32_matrix3x3_set_row3(const float c1, const float c2, const float c3, BgFP32Matrix3x3* matrix)
{
matrix->r3c1 = c1;
matrix->r3c2 = c2;
matrix->r3c3 = c3;
}
static inline void dp_matrix3x3_set_row3(const double c1, const double c2, const double c3, DPMatrix3x3* matrix)
static inline void bg_fp64_matrix3x3_set_row3(const double c1, const double c2, const double c3, BgFP64Matrix3x3* matrix)
{
matrix->r3c1 = c1;
matrix->r3c2 = c2;
@ -332,14 +332,14 @@ static inline void dp_matrix3x3_set_row3(const double c1, const double c2, const
// ================ Set Column 1 ================ //
static inline void sp_matrix3x3_set_column1(const float r1, const float r2, const float r3, SPMatrix3x3* matrix)
static inline void bg_fp32_matrix3x3_set_column1(const float r1, const float r2, const float r3, BgFP32Matrix3x3* matrix)
{
matrix->r1c1 = r1;
matrix->r2c1 = r2;
matrix->r3c1 = r3;
}