changeset 770:5bf93c6b3d1d

*** empty log message ***
author david <david>
date Tue, 21 Feb 1995 12:58:40 +0000
parents df6fbc2fc74e
children 61cf793fe122
files volume_io/Geometry/newton.c
diffstat 1 files changed, 8 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/volume_io/Geometry/newton.c
+++ b/volume_io/Geometry/newton.c
@@ -1,16 +1,18 @@
 #include  <internal_volume_io.h>
 
-public  BOOLEAN  invert_function(
+public  BOOLEAN  newton_function_inversion(
     int    n_dimensions,
-    void   (*function) ( Real parameters[],  Real values[], Real **derivatives),
+    void   (*function) ( void *function_data,
+                         Real parameters[],  Real values[], Real **derivatives),
+    void   *function_data,
     Real   initial_guess[],
     Real   desired_values[],
     Real   solution[],
     Real   tolerance,
     int    max_iterations )
 {
-    int    iter, dim, i, j;
-    Real   *values, **derivatives;
+    int    iter, dim;
+    Real   *values, **derivatives, *delta, error;
 
     ALLOC( values, n_dimensions );
     ALLOC( delta, n_dimensions );
@@ -20,12 +22,13 @@
         solution[dim] = initial_guess[dim];
 
     iter = 0;
+    error = tolerance;
 
     while( max_iterations < 0 || iter < max_iterations )
     {
         ++iter;
 
-        (*function) ( solution, values, derivatives );
+        (*function) ( function_data, solution, values, derivatives );
 
         error = 0.0;
         for_less( dim, 0, n_dimensions )
@@ -37,14 +40,6 @@
         if( error < tolerance )
             break;
 
-        for_less( i, 0, n_dimensions-1 )
-        {
-            for_less( j, i+1, n_dimensions )
-            {
-                derivatives[j][i] = derivatives[i][j];
-            }
-        }
-
         if( !solve_linear_system( n_dimensions, derivatives, values, delta ) )
             break;