summary refs log tree commit diff
path: root/src/Maths.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Maths.cpp')
-rw-r--r--src/Maths.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/Maths.cpp b/src/Maths.cpp
new file mode 100644
index 0000000..58e769a
--- /dev/null
+++ b/src/Maths.cpp
@@ -0,0 +1,24 @@
+/**> HEADER FILES <**/
+#include "Maths.h"
+
+double fast_sqrt (register double arg)
+{	
+#ifdef OS9 
+	// Can replace with slower return std::sqrt(arg);
+	register double result;
+
+	if (arg == 0.0) return 0.0;
+	
+	asm {
+		frsqrte		result,arg			// Calculate Square root
+	}	
+	
+	// Newton Rhapson iterations.
+	result = result + 0.5 * result * (1.0 - arg * result * result);
+	result = result + 0.5 * result * (1.0 - arg * result * result);
+	
+	return result * arg;
+#else
+	return sqrt(arg);
+#endif
+}