ap.h   ap.h 
skipping to change at line 138 skipping to change at line 138
complex& operator*=(const complex& z){ double t = x*z.x-y*z.y; y = x*z. y+y*z.x; x = t; return *this; }; complex& operator*=(const complex& z){ double t = x*z.x-y*z.y; y = x*z. y+y*z.x; x = t; return *this; };
complex& operator/=(const complex& z) complex& operator/=(const complex& z)
{ {
ap::complex result; ap::complex result;
double e; double e;
double f; double f;
if( fabs(z.y)<fabs(z.x) ) if( fabs(z.y)<fabs(z.x) )
{ {
e = z.y/z.x; e = z.y/z.x;
f = z.x+z.y*e; f = z.x+z.y*e;
result.x = (z.x+z.y*e)/f; result.x = (x+y*e)/f;
result.y = (z.y-z.x*e)/f; result.y = (y-x*e)/f;
} }
else else
{ {
e = z.x/z.y; e = z.x/z.y;
f = z.y+z.x*e; f = z.y+z.x*e;
result.x = (z.y+z.x*e)/f; result.x = (y+x*e)/f;
result.y = (-z.x+z.y*e)/f; result.y = (-x+y*e)/f;
} }
*this = result; *this = result;
return *this; return *this;
}; };
double x, y; double x, y;
}; };
const complex operator/(const complex& lhs, const complex& rhs); const complex operator/(const complex& lhs, const complex& rhs);
const bool operator==(const complex& lhs, const complex& rhs); const bool operator==(const complex& lhs, const complex& rhs);
 End of changes. 2 change blocks. 
4 lines changed or deleted 4 lines changed or added


 conv.h   conv.h 
skipping to change at line 118 skipping to change at line 118
INPUT PARAMETERS INPUT PARAMETERS
S - array[0..M-1] - complex periodic signal S - array[0..M-1] - complex periodic signal
M - problem size M - problem size
B - array[0..N-1] - complex non-periodic response B - array[0..N-1] - complex non-periodic response
N - problem size N - problem size
OUTPUT PARAMETERS OUTPUT PARAMETERS
R - convolution: A*B. array[0..M-1]. R - convolution: A*B. array[0..M-1].
NOTE: NOTE:
It is assumed that A is zero at T<0, B is zero too. If one or both It is assumed that B is zero at T<0. If it has non-zero values at
functions have non-zero values at negative T's, you can still use this negative T's, you can still use this subroutine - just shift its result
subroutine - just shift its result correspondingly. correspondingly.
-- ALGLIB -- -- ALGLIB --
Copyright 21.07.2009 by Bochkanov Sergey Copyright 21.07.2009 by Bochkanov Sergey
*************************************************************************/ *************************************************************************/
void convc1dcircular(const ap::complex_1d_array& s, void convc1dcircular(const ap::complex_1d_array& s,
int m, int m,
const ap::complex_1d_array& r, const ap::complex_1d_array& r,
int n, int n,
ap::complex_1d_array& c); ap::complex_1d_array& c);
skipping to change at line 150 skipping to change at line 150
N - response length N - response length
OUTPUT PARAMETERS OUTPUT PARAMETERS
R - deconvolved signal. array[0..M-1]. R - deconvolved signal. array[0..M-1].
NOTE: NOTE:
deconvolution is unstable process and may result in division by zero deconvolution is unstable process and may result in division by zero
(if your response function is degenerate, i.e. has zero Fourier coefficient ). (if your response function is degenerate, i.e. has zero Fourier coefficient ).
NOTE: NOTE:
It is assumed that A is zero at T<0, B is zero too. If one or both It is assumed that B is zero at T<0. If it has non-zero values at
functions have non-zero values at negative T's, you can still use this negative T's, you can still use this subroutine - just shift its result
subroutine - just shift its result correspondingly. correspondingly.
-- ALGLIB -- -- ALGLIB --
Copyright 21.07.2009 by Bochkanov Sergey Copyright 21.07.2009 by Bochkanov Sergey
*************************************************************************/ *************************************************************************/
void convc1dcircularinv(const ap::complex_1d_array& a, void convc1dcircularinv(const ap::complex_1d_array& a,
int m, int m,
const ap::complex_1d_array& b, const ap::complex_1d_array& b,
int n, int n,
ap::complex_1d_array& r); ap::complex_1d_array& r);
skipping to change at line 238 skipping to change at line 238
INPUT PARAMETERS INPUT PARAMETERS
S - array[0..M-1] - real signal S - array[0..M-1] - real signal
M - problem size M - problem size
B - array[0..N-1] - real response B - array[0..N-1] - real response
N - problem size N - problem size
OUTPUT PARAMETERS OUTPUT PARAMETERS
R - convolution: A*B. array[0..M-1]. R - convolution: A*B. array[0..M-1].
NOTE: NOTE:
It is assumed that A is zero at T<0, B is zero too. If one or both It is assumed that B is zero at T<0. If it has non-zero values at
functions have non-zero values at negative T's, you can still use this negative T's, you can still use this subroutine - just shift its result
subroutine - just shift its result correspondingly. correspondingly.
-- ALGLIB -- -- ALGLIB --
Copyright 21.07.2009 by Bochkanov Sergey Copyright 21.07.2009 by Bochkanov Sergey
*************************************************************************/ *************************************************************************/
void convr1dcircular(const ap::real_1d_array& s, void convr1dcircular(const ap::real_1d_array& s,
int m, int m,
const ap::real_1d_array& r, const ap::real_1d_array& r,
int n, int n,
ap::real_1d_array& c); ap::real_1d_array& c);
skipping to change at line 270 skipping to change at line 270
N - response length N - response length
OUTPUT PARAMETERS OUTPUT PARAMETERS
R - deconvolved signal. array[0..M-N]. R - deconvolved signal. array[0..M-N].
NOTE: NOTE:
deconvolution is unstable process and may result in division by zero deconvolution is unstable process and may result in division by zero
(if your response function is degenerate, i.e. has zero Fourier coefficient ). (if your response function is degenerate, i.e. has zero Fourier coefficient ).
NOTE: NOTE:
It is assumed that A is zero at T<0, B is zero too. If one or both It is assumed that B is zero at T<0. If it has non-zero values at
functions have non-zero values at negative T's, you can still use this negative T's, you can still use this subroutine - just shift its result
subroutine - just shift its result correspondingly. correspondingly.
-- ALGLIB -- -- ALGLIB --
Copyright 21.07.2009 by Bochkanov Sergey Copyright 21.07.2009 by Bochkanov Sergey
*************************************************************************/ *************************************************************************/
void convr1dcircularinv(const ap::real_1d_array& a, void convr1dcircularinv(const ap::real_1d_array& a,
int m, int m,
const ap::real_1d_array& b, const ap::real_1d_array& b,
int n, int n,
ap::real_1d_array& r); ap::real_1d_array& r);
 End of changes. 4 change blocks. 
12 lines changed or deleted 12 lines changed or added


 kmeans.h   kmeans.h 
skipping to change at line 41 skipping to change at line 41
INPUT PARAMETERS: INPUT PARAMETERS:
XY - dataset, array [0..NPoints-1,0..NVars-1]. XY - dataset, array [0..NPoints-1,0..NVars-1].
NPoints - dataset size, NPoints>=K NPoints - dataset size, NPoints>=K
NVars - number of variables, NVars>=1 NVars - number of variables, NVars>=1
K - desired number of clusters, K>=1 K - desired number of clusters, K>=1
Restarts - number of restarts, Restarts>=1 Restarts - number of restarts, Restarts>=1
OUTPUT PARAMETERS: OUTPUT PARAMETERS:
Info - return code: Info - return code:
* -3, if taskis degenerate (number of distinct points i s * -3, if task is degenerate (number of distinct points is
less than K) less than K)
* -1, if incorrect NPoints/NFeatures/K/Restarts was pas sed * -1, if incorrect NPoints/NFeatures/K/Restarts was pas sed
* 1, if subroutine finished successfully * 1, if subroutine finished successfully
C - array[0..NVars-1,0..K-1].matrix whose columns store C - array[0..NVars-1,0..K-1].matrix whose columns store
cluster's centers cluster's centers
XYC - array which contains number of clusters dataset points XYC - array which contains number of clusters dataset points
belong to. belong to.
-- ALGLIB -- -- ALGLIB --
Copyright 21.03.2009 by Bochkanov Sergey Copyright 21.03.2009 by Bochkanov Sergey
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 polint.h   polint.h 
skipping to change at line 54 skipping to change at line 54
#include "rotations.h" #include "rotations.h"
#include "bdsvd.h" #include "bdsvd.h"
#include "svd.h" #include "svd.h"
#include "xblas.h" #include "xblas.h"
#include "densesolver.h" #include "densesolver.h"
#include "linmin.h" #include "linmin.h"
#include "minlbfgs.h" #include "minlbfgs.h"
#include "minlm.h" #include "minlm.h"
#include "lsfit.h" #include "lsfit.h"
#include "ratint.h" #include "ratint.h"
#include "taskgen.h" #include "apserv.h"
/************************************************************************* /*************************************************************************
Polynomial fitting report: Polynomial fitting report:
TaskRCond reciprocal of task's condition number TaskRCond reciprocal of task's condition number
RMSError RMS error RMSError RMS error
AvgError average error AvgError average error
AvgRelError average relative error (for non-zero Y[I]) AvgRelError average relative error (for non-zero Y[I])
MaxError maximum error MaxError maximum error
*************************************************************************/ *************************************************************************/
struct polynomialfitreport struct polynomialfitreport
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 spline1d.h   spline1d.h 
skipping to change at line 52 skipping to change at line 52
#include "ortfac.h" #include "ortfac.h"
#include "rotations.h" #include "rotations.h"
#include "bdsvd.h" #include "bdsvd.h"
#include "svd.h" #include "svd.h"
#include "xblas.h" #include "xblas.h"
#include "densesolver.h" #include "densesolver.h"
#include "linmin.h" #include "linmin.h"
#include "minlbfgs.h" #include "minlbfgs.h"
#include "minlm.h" #include "minlm.h"
#include "lsfit.h" #include "lsfit.h"
#include "apserv.h"
/************************************************************************* /*************************************************************************
1-dimensional spline inteprolant 1-dimensional spline inteprolant
*************************************************************************/ *************************************************************************/
struct spline1dinterpolant struct spline1dinterpolant
{ {
bool periodic;
int n; int n;
int k; int k;
ap::real_1d_array x; ap::real_1d_array x;
ap::real_1d_array c; ap::real_1d_array c;
}; };
/************************************************************************* /*************************************************************************
Spline fitting report: Spline fitting report:
TaskRCond reciprocal of task's condition number TaskRCond reciprocal of task's condition number
RMSError RMS error RMSError RMS error
skipping to change at line 92 skipping to change at line 94
This subroutine builds linear spline interpolant This subroutine builds linear spline interpolant
INPUT PARAMETERS: INPUT PARAMETERS:
X - spline nodes, array[0..N-1] X - spline nodes, array[0..N-1]
Y - function values, array[0..N-1] Y - function values, array[0..N-1]
N - points count, N>=2 N - points count, N>=2
OUTPUT PARAMETERS: OUTPUT PARAMETERS:
C - spline interpolant C - spline interpolant
ORDER OF POINTS
Subroutine automatically sorts points, so caller may pass unsorted array.
-- ALGLIB PROJECT -- -- ALGLIB PROJECT --
Copyright 24.06.2007 by Bochkanov Sergey Copyright 24.06.2007 by Bochkanov Sergey
*************************************************************************/ *************************************************************************/
void spline1dbuildlinear(ap::real_1d_array x, void spline1dbuildlinear(ap::real_1d_array x,
ap::real_1d_array y, ap::real_1d_array y,
int n, int n,
spline1dinterpolant& c); spline1dinterpolant& c);
/************************************************************************* /*************************************************************************
This subroutine builds cubic spline interpolant. This subroutine builds cubic spline interpolant.
INPUT PARAMETERS: INPUT PARAMETERS:
X - spline nodes, array[0..N-1] X - spline nodes, array[0..N-1].
Y - function values, array[0..N-1] Y - function values, array[0..N-1].
N - points count, N>=2 N - points count, N>=2
BoundLType - boundary condition type for the left boundary BoundLType - boundary condition type for the left boundary
BoundL - left boundary condition (first or second derivative, BoundL - left boundary condition (first or second derivative,
depending on the BoundLType) depending on the BoundLType)
BoundRType - boundary condition type for the right boundary BoundRType - boundary condition type for the right boundary
BoundR - right boundary condition (first or second derivative, BoundR - right boundary condition (first or second derivative,
depending on the BoundRType) depending on the BoundRType)
OUTPUT PARAMETERS: OUTPUT PARAMETERS:
C - spline interpolant C - spline interpolant
ORDER OF POINTS
Subroutine automatically sorts points, so caller may pass unsorted array.
SETTING BOUNDARY VALUES:
The BoundLType/BoundRType parameters can have the following values: The BoundLType/BoundRType parameters can have the following values:
* 0, which corresponds to the parabolically terminated spline * -1, which corresonds to the periodic (cyclic) boundary conditions.
(BoundL/BoundR are ignored). In this case:
* 1, which corresponds to the first derivative boundary condition * both BoundLType and BoundRType must be equal to -1.
* 2, which corresponds to the second derivative boundary condition * BoundL/BoundR are ignored
* Y[last] is ignored (it is assumed to be equal to Y[first]).
* 0, which corresponds to the parabolically terminated spline
(BoundL and/or BoundR are ignored).
* 1, which corresponds to the first derivative boundary condition
* 2, which corresponds to the second derivative boundary condition
PROBLEMS WITH PERIODIC BOUNDARY CONDITIONS:
Problems with periodic boundary conditions have Y[first_point]=Y[last_point
].
However, this subroutine doesn't require you to specify equal values for
the first and last points - it automatically forces them to be equal.
-- ALGLIB PROJECT -- -- ALGLIB PROJECT --
Copyright 23.06.2007 by Bochkanov Sergey Copyright 23.06.2007 by Bochkanov Sergey
*************************************************************************/ *************************************************************************/
void spline1dbuildcubic(ap::real_1d_array x, void spline1dbuildcubic(ap::real_1d_array x,
ap::real_1d_array y, ap::real_1d_array y,
int n, int n,
int boundltype, int boundltype,
double boundl, double boundl,
int boundrtype, int boundrtype,
double boundr, double boundr,
spline1dinterpolant& c); spline1dinterpolant& c);
/************************************************************************* /*************************************************************************
This subroutine builds Catmull-Rom spline interpolant.
INPUT PARAMETERS:
X - spline nodes, array[0..N-1].
Y - function values, array[0..N-1].
N - points count, N>=2
BoundType - boundary condition type:
* -1 for periodic boundary condition
* 0 for parabolically terminated spline
Tension - tension parameter:
* tension=0 corresponds to classic Catmull-Rom spline
* 0<tension<1 corresponds to more general form - cardin
al spline
OUTPUT PARAMETERS:
C - spline interpolant
ORDER OF POINTS
Subroutine automatically sorts points, so caller may pass unsorted array.
PROBLEMS WITH PERIODIC BOUNDARY CONDITIONS:
Problems with periodic boundary conditions have Y[first_point]=Y[last_point
].
However, this subroutine doesn't require you to specify equal values for
the first and last points - it automatically forces them to be equal.
-- ALGLIB PROJECT --
Copyright 23.06.2007 by Bochkanov Sergey
*************************************************************************/
void spline1dbuildcatmullrom(ap::real_1d_array x,
ap::real_1d_array y,
int n,
int boundtype,
double tension,
spline1dinterpolant& c);
/*************************************************************************
This subroutine builds Hermite spline interpolant. This subroutine builds Hermite spline interpolant.
INPUT PARAMETERS: INPUT PARAMETERS:
X - spline nodes, array[0..N-1] X - spline nodes, array[0..N-1]
Y - function values, array[0..N-1] Y - function values, array[0..N-1]
D - derivatives, array[0..N-1] D - derivatives, array[0..N-1]
N - points count, N>=2 N - points count, N>=2
OUTPUT PARAMETERS: OUTPUT PARAMETERS:
C - spline interpolant. C - spline interpolant.
ORDER OF POINTS
Subroutine automatically sorts points, so caller may pass unsorted array.
-- ALGLIB PROJECT -- -- ALGLIB PROJECT --
Copyright 23.06.2007 by Bochkanov Sergey Copyright 23.06.2007 by Bochkanov Sergey
*************************************************************************/ *************************************************************************/
void spline1dbuildhermite(ap::real_1d_array x, void spline1dbuildhermite(ap::real_1d_array x,
ap::real_1d_array y, ap::real_1d_array y,
ap::real_1d_array d, ap::real_1d_array d,
int n, int n,
spline1dinterpolant& c); spline1dinterpolant& c);
/************************************************************************* /*************************************************************************
This subroutine builds Akima spline interpolant This subroutine builds Akima spline interpolant
INPUT PARAMETERS: INPUT PARAMETERS:
X - spline nodes, array[0..N-1] X - spline nodes, array[0..N-1]
Y - function values, array[0..N-1] Y - function values, array[0..N-1]
N - points count, N>=5 N - points count, N>=5
OUTPUT PARAMETERS: OUTPUT PARAMETERS:
C - spline interpolant C - spline interpolant
ORDER OF POINTS
Subroutine automatically sorts points, so caller may pass unsorted array.
-- ALGLIB PROJECT -- -- ALGLIB PROJECT --
Copyright 24.06.2007 by Bochkanov Sergey Copyright 24.06.2007 by Bochkanov Sergey
*************************************************************************/ *************************************************************************/
void spline1dbuildakima(ap::real_1d_array x, void spline1dbuildakima(ap::real_1d_array x,
ap::real_1d_array y, ap::real_1d_array y,
int n, int n,
spline1dinterpolant& c); spline1dinterpolant& c);
/************************************************************************* /*************************************************************************
Weighted fitting by cubic spline, with constraints on function values or Weighted fitting by cubic spline, with constraints on function values or
skipping to change at line 234 skipping to change at line 302
Following fields are set: Following fields are set:
* RMSError rms error on the (X,Y). * RMSError rms error on the (X,Y).
* AvgError average error on the (X,Y). * AvgError average error on the (X,Y).
* AvgRelError average relative error on the non-zero Y * AvgRelError average relative error on the non-zero Y
* MaxError maximum error * MaxError maximum error
NON-WEIGHTED ERRORS ARE CALCULATED NON-WEIGHTED ERRORS ARE CALCULATED
IMPORTANT: IMPORTANT:
this subroitine doesn't calculate task's condition number for K<>0. this subroitine doesn't calculate task's condition number for K<>0.
ORDER OF POINTS
Subroutine automatically sorts points, so caller may pass unsorted array.
SETTING CONSTRAINTS - DANGERS AND OPPORTUNITIES: SETTING CONSTRAINTS - DANGERS AND OPPORTUNITIES:
Setting constraints can lead to undesired results, like ill-conditioned Setting constraints can lead to undesired results, like ill-conditioned
behavior, or inconsistency being detected. From the other side, it allows behavior, or inconsistency being detected. From the other side, it allows
us to improve quality of the fit. Here we summarize our experience with us to improve quality of the fit. Here we summarize our experience with
constrained regression splines: constrained regression splines:
* excessive constraints can be inconsistent. Splines are piecewise cubic * excessive constraints can be inconsistent. Splines are piecewise cubic
functions, and it is easy to create an example, where large number of functions, and it is easy to create an example, where large number of
constraints concentrated in small area will result in inconsistency. constraints concentrated in small area will result in inconsistency.
Just because spline is not flexible enough to satisfy all of them. And Just because spline is not flexible enough to satisfy all of them. And
skipping to change at line 340 skipping to change at line 412
* AvgRelError average relative error on the non-zero Y * AvgRelError average relative error on the non-zero Y
* MaxError maximum error * MaxError maximum error
NON-WEIGHTED ERRORS ARE CALCULATED NON-WEIGHTED ERRORS ARE CALCULATED
IMPORTANT: IMPORTANT:
this subroitine doesn't calculate task's condition number for K<>0. this subroitine doesn't calculate task's condition number for K<>0.
IMPORTANT: IMPORTANT:
this subroitine supports only even M's this subroitine supports only even M's
ORDER OF POINTS
Subroutine automatically sorts points, so caller may pass unsorted array.
SETTING CONSTRAINTS - DANGERS AND OPPORTUNITIES: SETTING CONSTRAINTS - DANGERS AND OPPORTUNITIES:
Setting constraints can lead to undesired results, like ill-conditioned Setting constraints can lead to undesired results, like ill-conditioned
behavior, or inconsistency being detected. From the other side, it allows behavior, or inconsistency being detected. From the other side, it allows
us to improve quality of the fit. Here we summarize our experience with us to improve quality of the fit. Here we summarize our experience with
constrained regression splines: constrained regression splines:
* excessive constraints can be inconsistent. Splines are piecewise cubic * excessive constraints can be inconsistent. Splines are piecewise cubic
functions, and it is easy to create an example, where large number of functions, and it is easy to create an example, where large number of
constraints concentrated in small area will result in inconsistency. constraints concentrated in small area will result in inconsistency.
Just because spline is not flexible enough to satisfy all of them. And Just because spline is not flexible enough to satisfy all of them. And
skipping to change at line 471 skipping to change at line 547
Result: Result:
CC - spline copy CC - spline copy
-- ALGLIB PROJECT -- -- ALGLIB PROJECT --
Copyright 29.06.2007 by Bochkanov Sergey Copyright 29.06.2007 by Bochkanov Sergey
*************************************************************************/ *************************************************************************/
void spline1dcopy(const spline1dinterpolant& c, spline1dinterpolant& cc); void spline1dcopy(const spline1dinterpolant& c, spline1dinterpolant& cc);
/************************************************************************* /*************************************************************************
Serialization of the spline interpolant
INPUT PARAMETERS:
B - spline interpolant
OUTPUT PARAMETERS:
RA - array of real numbers which contains interpolant,
array[0..RLen-1]
RLen - RA lenght
-- ALGLIB --
Copyright 17.08.2009 by Bochkanov Sergey
*************************************************************************/
void spline1dserialize(const spline1dinterpolant& c,
ap::real_1d_array& ra,
int& ralen);
/*************************************************************************
Unserialization of the spline interpolant
INPUT PARAMETERS:
RA - array of real numbers which contains interpolant,
OUTPUT PARAMETERS:
B - spline interpolant
-- ALGLIB --
Copyright 17.08.2009 by Bochkanov Sergey
*************************************************************************/
void spline1dunserialize(const ap::real_1d_array& ra, spline1dinterpolant&
c);
/*************************************************************************
This subroutine unpacks the spline into the coefficients table. This subroutine unpacks the spline into the coefficients table.
INPUT PARAMETERS: INPUT PARAMETERS:
C - spline interpolant. C - spline interpolant.
X - point X - point
Result: Result:
Tbl - coefficients table, unpacked format, array[0..N-2, 0..5]. Tbl - coefficients table, unpacked format, array[0..N-2, 0..5].
For I = 0...N-2: For I = 0...N-2:
Tbl[I,0] = X[i] Tbl[I,0] = X[i]
skipping to change at line 562 skipping to change at line 606
-- ALGLIB PROJECT -- -- ALGLIB PROJECT --
Copyright 30.06.2007 by Bochkanov Sergey Copyright 30.06.2007 by Bochkanov Sergey
*************************************************************************/ *************************************************************************/
void spline1dlintransy(spline1dinterpolant& c, double a, double b); void spline1dlintransy(spline1dinterpolant& c, double a, double b);
/************************************************************************* /*************************************************************************
This subroutine integrates the spline. This subroutine integrates the spline.
INPUT PARAMETERS: INPUT PARAMETERS:
C - spline interpolant. C - spline interpolant.
X - right bound of the integration interval [a, x] X - right bound of the integration interval [a, x],
here 'a' denotes min(x[])
Result: Result:
integral(S(t)dt,a,x) integral(S(t)dt,a,x)
-- ALGLIB PROJECT -- -- ALGLIB PROJECT --
Copyright 23.06.2007 by Bochkanov Sergey Copyright 23.06.2007 by Bochkanov Sergey
*************************************************************************/ *************************************************************************/
double spline1dintegrate(const spline1dinterpolant& c, double x); double spline1dintegrate(const spline1dinterpolant& c, double x);
#endif #endif
 End of changes. 13 change blocks. 
40 lines changed or deleted 87 lines changed or added


 spline2d.h   spline2d.h 
skipping to change at line 52 skipping to change at line 52
#include "ortfac.h" #include "ortfac.h"
#include "rotations.h" #include "rotations.h"
#include "bdsvd.h" #include "bdsvd.h"
#include "svd.h" #include "svd.h"
#include "xblas.h" #include "xblas.h"
#include "densesolver.h" #include "densesolver.h"
#include "linmin.h" #include "linmin.h"
#include "minlbfgs.h" #include "minlbfgs.h"
#include "minlm.h" #include "minlm.h"
#include "lsfit.h" #include "lsfit.h"
#include "apserv.h"
#include "spline1d.h" #include "spline1d.h"
/************************************************************************* /*************************************************************************
2-dimensional spline inteprolant 2-dimensional spline inteprolant
*************************************************************************/ *************************************************************************/
struct spline2dinterpolant struct spline2dinterpolant
{ {
int k; int k;
ap::real_1d_array c; ap::real_1d_array c;
}; };
 End of changes. 1 change blocks. 
0 lines changed or deleted 1 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/