From a748a17c7285910b32617850cb52d9a048bcbd46 Mon Sep 17 00:00:00 2001
From: Hong-Phuc Bui <hong-phuc.bui@htwsaar.de>
Date: Sun, 21 Apr 2024 06:08:01 +0200
Subject: [PATCH] add bsp while
---
python-grundlage/find-machinell-epsilon.py | 13 ++++++
python-grundlage/sqrt-newton.py | 10 +++++
python-grundlage/c/size_of_test.c | 2
README.md | 4 ++
python-grundlage/c/quake_iii_fisqrt.c | 32 ++++++++++++++++
5 files changed, 60 insertions(+), 1 deletions(-)
diff --git a/README.md b/README.md
index 0e69485..6184510 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,6 @@
# Hier ist eine Sammlung von Beispiel-Projekts Sommersemester 2024
+
+## python-grundlage
+
+Das notwendigste Wissen über Python
diff --git a/python-grundlage/c/quake_iii_fisqrt.c b/python-grundlage/c/quake_iii_fisqrt.c
new file mode 100644
index 0000000..b50c9b2
--- /dev/null
+++ b/python-grundlage/c/quake_iii_fisqrt.c
@@ -0,0 +1,32 @@
+/* explain https://www.youtube.com/watch?v=p8u_k2LIZyo */
+
+#include <stdio.h>
+
+float Q_rsqrt(float number)
+{
+ long i;
+ float x2, y;
+ const float threehalfs = 1.5F;
+
+ x2 = number*0.5F;
+ y = number;
+ i = *(long *) &y;
+ i = 0x5f3759df - (i >> 1);
+ printf("i = %lu\n", i);
+ y = *( float *) &i;
+ printf("y = %f\n", y);
+ y = y * (threehalfs - (x2*y*y));
+
+ return y;
+}
+
+int main()
+{
+ float n = 5.0;
+ float f = Q_rsqrt(n);
+ printf("1/sqrt(%f) = %f", n, f);
+ return 0;
+}
+
+
+
diff --git a/python-grundlage/c/size_of_test.c b/python-grundlage/c/size_of_test.c
index 126d595..34bf883 100644
--- a/python-grundlage/c/size_of_test.c
+++ b/python-grundlage/c/size_of_test.c
@@ -5,7 +5,7 @@
const unsigned int max = 4294967295;
const unsigned int max_as_negativ = -1;
printf("%d\n", max); // expected output: -1
- printf("%u\n", max);
+ printf("%u\n", max); // expected output: 4294967295 (32 bits)
bool same = max == max_as_negativ;
if(same)
{
diff --git a/python-grundlage/find-machinell-epsilon.py b/python-grundlage/find-machinell-epsilon.py
new file mode 100644
index 0000000..4fd47a5
--- /dev/null
+++ b/python-grundlage/find-machinell-epsilon.py
@@ -0,0 +1,13 @@
+# Credit: https://stackoverflow.com/a/57579379
+
+import sys
+
+eps = 1.0
+while eps + 1 > 1:
+ eps /= 2
+eps *= 2
+sys_eps = sys.float_info.epsilon
+print(f"The calculated epsilon: {eps}")
+print(f" The system epsilon: {sys_eps}")
+
+
diff --git a/python-grundlage/sqrt-newton.py b/python-grundlage/sqrt-newton.py
new file mode 100644
index 0000000..00cfa07
--- /dev/null
+++ b/python-grundlage/sqrt-newton.py
@@ -0,0 +1,10 @@
+import sys
+
+n = float(sys.argv[1])
+EPSILON = sys.float_info.epsilon
+
+t = n
+while abs(t - n/t) > (EPSILON*t):
+ t = (n / t + t) / 2
+
+print(f"sqrt({n}) ~= {t}")
--
Gitblit v1.10.0