summaryrefslogtreecommitdiffstats
path: root/Tests/Tutorial/Step4/MathFunctions
diff options
context:
space:
mode:
authorKen Martin <ken.martin@kitware.com>2005-11-10 15:50:45 (GMT)
committerKen Martin <ken.martin@kitware.com>2005-11-10 15:50:45 (GMT)
commit699a97a504f0a56858c91399954fb368a37048b7 (patch)
tree3ec027d9963748a453150ebae5bf4d1420a2b676 /Tests/Tutorial/Step4/MathFunctions
parent814f0a573afba55840b5b3d7cdb4b710a996e100 (diff)
downloadCMake-699a97a504f0a56858c91399954fb368a37048b7.zip
CMake-699a97a504f0a56858c91399954fb368a37048b7.tar.gz
CMake-699a97a504f0a56858c91399954fb368a37048b7.tar.bz2
ENH: step 4
Diffstat (limited to 'Tests/Tutorial/Step4/MathFunctions')
-rw-r--r--Tests/Tutorial/Step4/MathFunctions/CMakeLists.txt4
-rw-r--r--Tests/Tutorial/Step4/MathFunctions/MathFunctions.h1
-rw-r--r--Tests/Tutorial/Step4/MathFunctions/mysqrt.cxx39
3 files changed, 44 insertions, 0 deletions
diff --git a/Tests/Tutorial/Step4/MathFunctions/CMakeLists.txt b/Tests/Tutorial/Step4/MathFunctions/CMakeLists.txt
new file mode 100644
index 0000000..329c204
--- /dev/null
+++ b/Tests/Tutorial/Step4/MathFunctions/CMakeLists.txt
@@ -0,0 +1,4 @@
+add_library(MathFunctions mysqrt.cxx)
+
+install_targets (/bin MathFunctions)
+install_files (/include FILES MathFunctions.h)
diff --git a/Tests/Tutorial/Step4/MathFunctions/MathFunctions.h b/Tests/Tutorial/Step4/MathFunctions/MathFunctions.h
new file mode 100644
index 0000000..cd36bcc
--- /dev/null
+++ b/Tests/Tutorial/Step4/MathFunctions/MathFunctions.h
@@ -0,0 +1 @@
+double mysqrt(double x);
diff --git a/Tests/Tutorial/Step4/MathFunctions/mysqrt.cxx b/Tests/Tutorial/Step4/MathFunctions/mysqrt.cxx
new file mode 100644
index 0000000..0cf7db4
--- /dev/null
+++ b/Tests/Tutorial/Step4/MathFunctions/mysqrt.cxx
@@ -0,0 +1,39 @@
+#include <stdio.h>
+#include "MathFunctions.h"
+#include "TutorialConfig.h"
+
+#include <math.h>
+
+// a hack square root calculation using simple operations
+double mysqrt(double x)
+{
+ if (x <= 0)
+ {
+ return 0;
+ }
+
+ double result;
+
+ // if we have both log and exp then use them
+#if defined(HAVE_LOG) && defined (HAVE_EXP)
+ result = exp(log(x)*0.5);
+ fprintf(stdout,"Computing sqrt of %g to be %g using log\n",x,result);
+#else
+ double delta;
+ result = x;
+
+ // do ten iterations
+ int i;
+ for (i = 0; i < 10; ++i)
+ {
+ if (result <= 0)
+ {
+ result = 0.1;
+ }
+ delta = x - (result*result);
+ result = result + 0.5*delta/result;
+ fprintf(stdout,"Computing sqrt of %g to be %g\n",x,result);
+ }
+#endif
+ return result;
+}