aboutsummaryrefslogtreecommitdiff
path: root/src/GeneralizedPolynomial-Uniform/Lagrange/2d.log
diff options
context:
space:
mode:
Diffstat (limited to 'src/GeneralizedPolynomial-Uniform/Lagrange/2d.log')
-rw-r--r--src/GeneralizedPolynomial-Uniform/Lagrange/2d.log4482
1 files changed, 4482 insertions, 0 deletions
diff --git a/src/GeneralizedPolynomial-Uniform/Lagrange/2d.log b/src/GeneralizedPolynomial-Uniform/Lagrange/2d.log
new file mode 100644
index 0000000..4fa17e7
--- /dev/null
+++ b/src/GeneralizedPolynomial-Uniform/Lagrange/2d.log
@@ -0,0 +1,4482 @@
+ |\^/| Maple 7 (IBM INTEL LINUX)
+._|\| |/|_. Copyright (c) 2001 by Waterloo Maple Inc.
+ \ MAPLE / All rights reserved. Maple is a registered trademark of
+ <____ ____> Waterloo Maple Inc.
+ | Type ? for help.
+# util.maple -- misc utility routines
+# $Id: util.maple,v 1.3 2002/05/19 13:12:18 jthorn Exp $
+>
+#
+# fix_rationals - convert numbers to RATIONAL() calls
+# nonmatching_names - find names in a list which *don't* have a specified prefix
+# sprint_numeric_list - convert a numeric list to a valid C identifier suffix
+# print_name_list_dcl - print a C declaration for a list of names
+#
+# hypercube_points - compute all (integer) points in an N-dimensional hypercube
+#
+# ftruncate - truncate a file to zero length
+#
+>
+################################################################################
+################################################################################
+################################################################################
+>
+#
+# This function converts all {integer, rational} subexpressions of its
+# input except integer exponents and -1 factors in products, into function
+# calls
+# RATIONAL(num,den)
+# This is useful in conjunction with the C() library function, since
+#
+# C( (1/3) * foo * bar )
+# t0 = foo*bar/3;
+#
+# generates a (slow) division (and runs the risk of mixed-mode-arithmetic
+# problems), while
+#
+# C((1.0/3.0) * foo * bar);
+# t0 = 0.3333333333*foo*bar;
+#
+# suffers from roundoff error. With this function,
+#
+# fix_rationals((1/3) * foo * bar);
+# RATIONAL(1,3) foo bar
+# C(%);
+# t0 = RATIONAL(1.0,3.0)*foo*bar;
+#
+# which a C preprocessor macro can easily convert to the desired
+#
+# t0 = (1.0/3.0)*foo*bar;
+#
+# Additionally, this function can be told to leave certain types of
+# subexpressions unconverged. For example,
+# fix_rationals(expr, type, specfunc(integer, DATA));
+# will leave all subexpressions of the form DATA(integer arguments)
+# unconverted.
+#
+# Arguments:
+# expr = (in) The expression to be converted.
+# inert_fn = (optional in)
+# If specified, this argument should be a Boolean procedure
+# or the name of a Boolean procedure. This procedure should
+# take one or more argument, and return true if and only if
+# the first argument should *not* be converted, i.e. if we
+# should leave this expression unchanged. See the last
+# example above.
+# ... = (optional in)
+# Any further arguments are passed as additional arguments to
+# the inert_fn procedure.
+#
+> fix_rationals :=
+> proc(
+> expr::{
+> algebraic, name = algebraic,
+> list({algebraic, name = algebraic}),
+> set ({algebraic, name = algebraic})
+> },
+> inert_fn::{name, procedure}
+> )
+> local nn, k,
+> base, power, fbase, fpower,
+> fn, fn_args_list,
+> num, den, mult;
+>
+# do we want to convert this expression?
+> if ((nargs >= 2) and inert_fn(expr, args[3..nargs]))
+> then return expr;
+> end if;
+>
+# recurse over lists and sets
+> if (type(expr, {list,set}))
+> then return map(fix_rationals, expr, args[2..nargs]);
+> end if;
+>
+# recurse over equation right hand sides
+> if (type(expr, name = algebraic))
+> then return ( lhs(expr) = fix_rationals(rhs(expr), args[2..nargs]) );
+> end if;
+>
+# recurse over functions other than RATIONAL()
+> if (type(expr, function))
+> then
+> fn := op(0, expr);
+> if (fn <> 'RATIONAL')
+> then
+> fn_args_list := [op(expr)];
+> fn_args_list := map(fix_rationals, fn_args_list, args[2..nargs]);
+> fn; return '%'( op(fn_args_list) );
+> end if;
+> end if;
+>
+> nn := nops(expr);
+>
+# recurse over sums
+> if (type(expr, `+`))
+> then return sum('fix_rationals(op(k,expr), args[2..nargs])', 'k'=1..nn);
+> end if;
+>
+# recurse over products
+# ... leaving leading -1 factors intact, i.e. not converted to RATIONAL(-1,1)
+> if (type(expr, `*`))
+> then
+> if (op(1, expr) = -1)
+> then return -1*fix_rationals(remove(type, expr, 'identical(-1)'),
+> args[2..nargs]);
+> else return product('fix_rationals(op(k,expr), args[2..nargs])',
+> 'k'=1..nn);
+> end if;
+> end if;
+>
+# recurse over powers
+# ... leaving integer exponents intact
+> if (type(expr, `^`))
+> then
+> base := op(1, expr);
+> power := op(2, expr);
+>
+> fbase := fix_rationals(base, args[2..nargs]);
+> if (type(power, integer))
+> then fpower := power;
+> else fpower := fix_rationals(power, args[2..nargs]);
+> end if;
+> return fbase ^ fpower;
+> end if;
+>
+# fix integers and fractions
+> if (type(expr, integer))
+> then return 'RATIONAL'(expr, 1);
+> end if;
+> if (type(expr, fraction))
+> then
+> num := op(1, expr);
+> den := op(2, expr);
+>
+> return 'RATIONAL'(num, den);
+> end if;
+>
+# turn Maple floating-point into integer fraction, then recursively fix that
+> if (type(expr, float))
+> then
+> mult := op(1, expr);
+> power := op(2, expr);
+> return fix_rationals(mult * 10^power, args[2..nargs]);
+> end if;
+>
+# identity op on names
+> if (type(expr, name))
+> then return expr;
+> end if;
+>
+# unknown type
+> error "%0",
+> "unknown type for expr!",
+> " whattype(expr) = ", whattype(expr),
+> " expr = ", expr;
+> end proc;
+fix_rationals := proc(expr::{algebraic, name = algebraic,
+list({algebraic, name = algebraic}), set({algebraic, name = algebraic})},
+inert_fn::{procedure, name})
+local nn, k, base, power, fbase, fpower, fn, fn_args_list, num, den, mult;
+ if 2 <= nargs and inert_fn(expr, args[3 .. nargs]) then return expr
+ end if;
+ if type(expr, {set, list}) then
+ return map(fix_rationals, expr, args[2 .. nargs])
+ end if;
+ if type(expr, name = algebraic) then
+ return lhs(expr) = fix_rationals(rhs(expr), args[2 .. nargs])
+ end if;
+ if type(expr, function) then
+ fn := op(0, expr);
+ if fn <> 'RATIONAL' then
+ fn_args_list := [op(expr)];
+ fn_args_list :=
+ map(fix_rationals, fn_args_list, args[2 .. nargs]);
+ fn;
+ return '%'(op(fn_args_list))
+ end if
+ end if;
+ nn := nops(expr);
+ if type(expr, `+`) then return
+ sum('fix_rationals(op(k, expr), args[2 .. nargs])', 'k' = 1 .. nn)
+ end if;
+ if type(expr, `*`) then
+ if op(1, expr) = -1 then return -fix_rationals(
+ remove(type, expr, 'identical(-1)'), args[2 .. nargs])
+ else return product('fix_rationals(op(k, expr), args[2 .. nargs])',
+ 'k' = 1 .. nn)
+ end if
+ end if;
+ if type(expr, `^`) then
+ base := op(1, expr);
+ power := op(2, expr);
+ fbase := fix_rationals(base, args[2 .. nargs]);
+ if type(power, integer) then fpower := power
+ else fpower := fix_rationals(power, args[2 .. nargs])
+ end if;
+ return fbase^fpower
+ end if;
+ if type(expr, integer) then return 'RATIONAL'(expr, 1) end if;
+ if type(expr, fraction) then
+ num := op(1, expr); den := op(2, expr); return 'RATIONAL'(num, den)
+ end if;
+ if type(expr, float) then
+ mult := op(1, expr);
+ power := op(2, expr);
+ return fix_rationals(mult*10^power, args[2 .. nargs])
+ end if;
+ if type(expr, name) then return expr end if;
+ error "%0", "unknown type for expr!", " whattype(expr) = ",
+ whattype(expr), " expr = ", expr
+end proc
+
+>
+################################################################################
+>
+#
+# This function finds names in a list which *don't* have a specified prefix.
+#
+# Arguments:
+# name_list = A list of the names.
+# prefix = The prefix we want to filter out.
+#
+# Results:
+# This function returns the subset list of names which don't have the
+# specified prefix.
+#
+> nonmatching_names :=
+> proc( name_list::list({name,string}), prefix::{name,string} )
+>
+> select( proc(n)
+> evalb(not StringTools[IsPrefix](prefix,n));
+> end proc
+> ,
+> name_list
+> );
+> end proc;
+nonmatching_names := proc(
+name_list::list({name, string}), prefix::{name, string})
+ select(proc(n) evalb(not StringTools[IsPrefix](prefix, n)) end proc,
+ name_list)
+end proc
+
+>
+################################################################################
+>
+#
+# This function converts a numeric list to a string which is a valid
+# C identifier suffix: elements are separated by "_", decimal points are
+# replaced by "x", and all nonzero values have explicit +/- signs, which
+# are replaced by "p"/"m".
+#
+# For example, [0,-3.5,+4] --> "0_m3x5_p4".
+#
+> sprint_numeric_list :=
+> proc(nlist::list(numeric))
+>
+# generate preliminary string, eg "+0_-3.5_+4"
+> map2(sprintf, "%+a", nlist);
+> ListTools[Join](%, "_");
+> cat(op(%));
+>
+# fixup bad characters
+> StringTools[SubstituteAll](%, "+0", "0");
+> StringTools[CharacterMap](".+-", "xpm", %);
+>
+> return %;
+> end proc;
+sprint_numeric_list := proc(nlist::list(numeric))
+ map2(sprintf, "%+a", nlist);
+ ListTools[Join](%, "_");
+ cat(op(%));
+ StringTools[SubstituteAll](%, "+0", "0");
+ StringTools[CharacterMap](".+-", "xpm", %);
+ return %
+end proc
+
+>
+################################################################################
+>
+#
+# This function prints a C declaration for a list of names.
+#
+# Argument:
+# name_list = A list of the names.
+# name_type = The C type of the names, eg. "double".
+# file_name = The file name to write the declaration to. This is
+# truncated before writing.
+#
+> print_name_list_dcl :=
+> proc( name_list::list({name,string}),
+> name_type::string,
+> file_name::string )
+> local blanks, separator_string;
+>
+> ftruncate(file_name);
+>
+# a sequence of blanks with the same length as name_type
+> seq(" ", i=1..length(name_type));
+>
+# string to separate names
+> separator_string := cat(",\n", %, " ");
+>
+> map(convert, name_list, string);
+> ListTools[Join](%, separator_string);
+> cat(op(%));
+>
+> fprintf(file_name,
+> "%s %s;\n",
+> name_type, %);
+>
+> fclose(file_name);
+> NULL;
+> end proc;
+print_name_list_dcl := proc(
+name_list::list({name, string}), name_type::string, file_name::string)
+local blanks, separator_string;
+ ftruncate(file_name);
+ seq(" ", i = 1 .. length(name_type));
+ separator_string := cat(",\n", %, " ");
+ map(convert, name_list, string);
+ ListTools[Join](%, separator_string);
+ cat(op(%));
+ fprintf(file_name, "%s %s;\n", name_type, %);
+ fclose(file_name);
+ NULL
+end proc
+
+>
+################################################################################
+################################################################################
+################################################################################
+>
+#
+# This function computes a list of all the (integer) points in an
+# N-dimensional hypercube, in lexicographic order. The present
+# implementation requires N <= 4.
+#
+# Arguments:
+# cmin,cmax = N-element lists of cube minimum/maximum coordinates.
+#
+# Results:
+# The function returns a set of d-element lists giving the coordinates.
+# For example,
+# hypercube([0,0], [2,1]
+# returns
+# { [0,0], [0,1], [1,0], [1,1], [2,0], [2,1] }
+> hypercube_points :=
+> proc(cmin::list(integer), cmax::list(integer))
+> local N, i,j,k,l;
+>
+> N := nops(cmin);
+> if (nops(cmax) <> N)
+> then error
+> "must have same number of dimensions for min and max coordinates!";
+> fi;
+>
+> if (N = 1)
+> then return [seq([i], i=cmin[1]..cmax[1])];
+> elif (N = 2)
+> then return [
+> seq(
+> seq([i,j], j=cmin[2]..cmax[2]),
+> i=cmin[1]..cmax[1])
+> ];
+> elif (N = 3)
+> then return [
+> seq(
+> seq(
+> seq([i,j,k], k=cmin[3]..cmax[3]),
+> j=cmin[2]..cmax[2] ),
+> i=cmin[1]..cmax[1])
+> ];
+> elif (N = 4)
+> then return [
+> seq(
+> seq(
+> seq(
+> seq([i,j,k,l], l=cmin[4]..cmax[4]),
+> k=cmin[3]..cmax[3] ),
+> j=cmin[2]..cmax[2]),
+> i=cmin[1]..cmax[1])
+> ];
+> else
+> error "implementation restriction: must have N <= 4, got %1!", N;
+> fi;
+> end proc;
+hypercube_points := proc(cmin::list(integer), cmax::list(integer))
+local N, i, j, k, l;
+ N := nops(cmin);
+ if nops(cmax) <> N then error
+ "must have same number of dimensions for min and max coordinates!"
+ end if;
+ if N = 1 then return [seq([i], i = cmin[1] .. cmax[1])]
+ elif N = 2 then return
+ [seq(seq([i, j], j = cmin[2] .. cmax[2]), i = cmin[1] .. cmax[1])]
+ elif N = 3 then return [seq(
+ seq(seq([i, j, k], k = cmin[3] .. cmax[3]), j = cmin[2] .. cmax[2])
+ , i = cmin[1] .. cmax[1])]
+ elif N = 4 then return [seq(seq(seq(
+ seq([i, j, k, l], l = cmin[4] .. cmax[4]), k = cmin[3] .. cmax[3]),
+ j = cmin[2] .. cmax[2]), i = cmin[1] .. cmax[1])]
+ else error "implementation restriction: must have N <= 4, got %1!", N
+ end if
+end proc
+
+>
+################################################################################
+################################################################################
+################################################################################
+>
+#
+# This function truncates a file to 0 length if it exists, or creates
+# it at that length if it doesn't exist.
+#
+# Arguments:
+# file_name = (in) The name of the file.
+#
+> ftruncate :=
+> proc(file_name::string)
+> fopen(file_name, 'WRITE');
+> fclose(%);
+> NULL;
+> end proc;
+ftruncate :=
+
+ proc(file_name::string) fopen(file_name, 'WRITE'); fclose(%); NULL end proc
+
+# interpolate.maple -- compute generalized interpolation formulas/coefficients
+# $Id: interpolate.maple,v 1.4 2002/05/14 15:52:50 jthorn Exp $
+>
+#
+# <<<representation of numbers, data values, etc>>>
+# Lagrange polynomial_interpolant - compute Lagrange polynomial interpolant
+# coeff_as_lc_of_data - coefficients of ... (linear combination of data)
+#
+# print_coeff__lc_of_data - print C code to compute coefficients
+# print_data_var_assign - print C code to assign data-value variables
+# print_interp_coeff_var_store - print C code to store coeff vars "somewhere"
+# print_interp_cmpt__lc_of_data - print C code for computation of interpolant
+#
+# coeff_name - name of coefficient of data at a given [m] coordinate
+# data_var_name - name of variable storing data value at a given [m] coordinate
+#
+>
+################################################################################
+>
+#
+# ***** representation of numbers, data values, etc *****
+#
+# We use RATIONAL(p.0,q.0) to denote the rational number p/q.
+#
+# We use DATA(...) to represent the data values being interpolated at a
+# specified [m] coordinate, where the arguments are the [m] coordinates.
+#
+# We use COEFF(...) to represent the molecule coefficient at a specified
+# [m] coordinate, where the arguments are the [m] coordinates.
+#
+# For example, the usual 1-D centered 2nd order 1st derivative molecule
+# would be written
+# RATIONAL(-1.0,2.0)*DATA(-1) + RATIONA(1.0,2.0)*DATA(1)
+# and its coefficients as
+# COEFF(-1) = RATIONAL(-1.0,2.0)
+# COEFF(1) = RATIONAL(1.0,2.0)
+#
+>
+################################################################################
+################################################################################
+################################################################################
+>
+#
+# This function computes a Lagrange polynomial interpolant in any
+# number of dimensions.
+#
+# Arguments:
+# fn = The interpolation function. This should be a procedure in the
+# coordinates, having the coefficients as global variables. For
+# example,
+# proc(x,y) c00 + c10*x + c01*y end proc
+# coeff_list = A set of the interpolation coefficients (coefficients in
+# the interpolation function), for example [c00, c10, c01].
+# coord_list = A list of the coordinates (independent variables in the
+# interpolation function), for example [x,y].
+# posn_list = A list of positions (each a list of numeric values) where the
+# interpolant is to use data, for example hypercube([0,0], [1,1]).
+# Any positions may be used; if they're redundant (as in the
+# example) the least-squares interpolant is computed.
+#
+# Results:
+# This function returns the interpolating polynomial, in the form of
+# an algebraic expression in the coordinates and the data values.
+#
+> Lagrange_polynomial_interpolant :=
+> proc(
+> fn::procedure, coeff_list::list(name),
+> coord_list::list(name), posn_list::list(list(numeric))
+> )
+> local posn, data_eqns, coeff_eqns;
+>
+# coefficients of interpolating polynomial
+> data_eqns := { seq( fn(op(posn))='DATA'(op(posn)) , posn=posn_list ) };
+> coeff_eqns := linalg[leastsqrs](data_eqns, {op(coeff_list)});
+> if (has(coeff_eqns, '_t'))
+> then error "interpolation coefficients aren't uniquely determined!";
+> end if;
+>
+# interpolant as a polynomial in the coordinates
+> return subs(coeff_eqns, eval(fn))(op(coord_list));
+> end proc;
+Lagrange_polynomial_interpolant := proc(fn::procedure, coeff_list::list(name),
+coord_list::list(name), posn_list::list(list(numeric)))
+local posn, data_eqns, coeff_eqns;
+ data_eqns := {seq(fn(op(posn)) = 'DATA'(op(posn)), posn = posn_list)};
+ coeff_eqns := linalg[leastsqrs](data_eqns, {op(coeff_list)});
+ if has(coeff_eqns, '_t') then
+ error "interpolation coefficients aren't uniquely determined!"
+ end if;
+ return subs(coeff_eqns, eval(fn))(op(coord_list))
+end proc
+
+>
+################################################################################
+>
+#
+# This function takes as input an interpolating polynomial, expresses
+# it as a linear combination of the data values, and returns the coefficeints
+# of that form.
+#
+# Arguments:
+# interpolant = The interpolating polynomial (an algebraic expression
+# in the coordinates and the data values).
+# posn_list = The same list of positions as was used to compute the
+# interpolating polynomial.
+#
+# Results:
+# This function returns the coefficients, as a list of equations of the
+# form COEFF(...) = value , where each value is a polynomial in the
+# coordinates. The order of the list matches that of posn_list.
+#
+> coeff_as_lc_of_data :=
+> proc(
+> interpolant::algebraic,
+> posn_list::list(list(numeric))
+> )
+> local data_list, interpolant_as_lc_of_data;
+>
+# interpolant as a linear combination of the data values
+> data_list := [ seq( 'DATA'(op(posn)) , posn=posn_list ) ];
+> interpolant_as_lc_of_data := collect(interpolant, data_list);
+>
+# coefficients of the data values in the linear combination
+> return map(
+> proc(posn::list(numeric))
+> coeff(interpolant_as_lc_of_data, DATA(op(posn)));
+> 'COEFF'(op(posn)) = %;
+> end proc
+> ,
+> posn_list
+> );
+> end proc;
+coeff_as_lc_of_data := proc(
+interpolant::algebraic, posn_list::list(list(numeric)))
+local data_list, interpolant_as_lc_of_data;
+ data_list := [seq('DATA'(op(posn)), posn = posn_list)];
+ interpolant_as_lc_of_data := collect(interpolant, data_list);
+ return map(proc(posn::list(numeric))
+ coeff(interpolant_as_lc_of_data, DATA(op(posn)));
+ 'COEFF'(op(posn)) = %
+ end proc, posn_list)
+end proc
+
+>
+################################################################################
+################################################################################
+################################################################################
+>
+#
+# This function prints C expressions for the coefficients of an
+# interpolating polynomial. (The polynomial is expressed as linear
+# combinations of the data values with coefficients which are
+# RATIONAL(p,q) calls.)
+#
+# Arguments:
+# coeff_list = A list of the coefficients, as returned from
+# coeff_as_lc_of_data() .
+# coeff_name_prefix = A prefix string for the coefficient names.
+# temp_name_type = The C type to be used for Maple-introduced temporary
+# names, eg. "double".
+# file_name = The file name to write the coefficients to. This is
+# truncated before writing.
+#
+> print_coeff__lc_of_data :=
+> proc( coeff_list::list(specfunc(numeric,COEFF) = algebraic),
+> coeff_name_prefix::string,
+> temp_name_type::string,
+> file_name::string )
+> global `codegen/C/function/informed`;
+> local coeff_list2, cmpt_list, temp_name_list;
+>
+# convert LHS of each equation from a COEFF() call (eg COEFF(-1,+1))
+# to a Maple/C variable name (eg coeff_I_m1_p1)
+> coeff_list2 := map(
+> proc(coeff_eqn::specfunc(numeric,COEFF) = algebraic)
+> local posn;
+> posn := [op(lhs(coeff_eqn))];
+> coeff_name(posn,coeff_name_prefix);
+> convert(%, name); # codegen[C] wants LHS
+> # to be an actual Maple *name*
+> % = fix_rationals(rhs(coeff_eqn));
+> end proc
+> ,
+> coeff_list
+> );
+>
+#
+# generate the C code
+#
+>
+# tell codegen[C] not to warn about unknown RATIONAL() and DATA() "fn calls"
+# via undocumented :( global table
+> `codegen/C/function/informed`['RATIONAL'] := true;
+> `codegen/C/function/informed`['DATA'] := true;
+>
+> ftruncate(file_name);
+>
+# optimized computation sequence for all the coefficients
+# (may use local variables t0,t1,t2,...)
+> cmpt_list := [codegen[optimize](coeff_list2, tryhard)];
+>
+# list of the t0,t1,t2,... local variables
+> temp_name_list := nonmatching_names(map(lhs,cmpt_list), coeff_name_prefix);
+>
+# declare the t0,t1,t2,... local variables (if there are any)
+> if (nops(temp_name_list) > 0)
+> then print_name_list_dcl(%, temp_name_type, file_name);
+> fi;
+>
+# now print the optimized computation sequence
+> codegen[C](cmpt_list, filename=file_name);
+>
+> fclose(file_name);
+>
+> NULL;
+> end proc;
+print_coeff__lc_of_data := proc(
+coeff_list::list(specfunc(numeric, COEFF) = algebraic),
+coeff_name_prefix::string, temp_name_type::string, file_name::string)
+local coeff_list2, cmpt_list, temp_name_list;
+global `codegen/C/function/informed`;
+ coeff_list2 := map(proc(
+ coeff_eqn::(specfunc(numeric, COEFF) = algebraic))
+ local posn;
+ posn := [op(lhs(coeff_eqn))];
+ coeff_name(posn, coeff_name_prefix);
+ convert(%, name);
+ % = fix_rationals(rhs(coeff_eqn))
+ end proc, coeff_list);
+ `codegen/C/function/informed`['RATIONAL'] := true;
+ `codegen/C/function/informed`['DATA'] := true;
+ ftruncate(file_name);
+ cmpt_list := [codegen[optimize](coeff_list2, tryhard)];
+ temp_name_list :=
+ nonmatching_names(map(lhs, cmpt_list), coeff_name_prefix);
+ if 0 < nops(temp_name_list) then
+ print_name_list_dcl(%, temp_name_type, file_name)
+ end if;
+ codegen[C](cmpt_list, filename = file_name);
+ fclose(file_name);
+ NULL
+end proc
+
+>
+################################################################################
+>
+#
+# This function prints a sequence of C expression to assign the data-value
+# variables, eg
+# data_m1_p1 = DATA(-1,1);
+#
+# Arguments:
+# posn_list = The same list of positions as was used to compute the
+# interpolating polynomial.
+# data_var_name_prefix = A prefix string for the data variable names.
+# file_name = The file name to write the coefficients to. This is
+# truncated before writing.
+#
+> print_data_var_assign :=
+> proc(
+> posn_list::list(list(numeric)),
+> data_var_name_prefix::string,
+> file_name::string
+> )
+>
+> ftruncate(file_name);
+> map(
+> proc(posn::list(numeric))
+> fprintf(file_name,
+> "%s = %a;\n",
+> data_var_name(posn,data_var_name_prefix),
+> DATA(op(posn)));
+> end proc
+> ,
+> posn_list
+> );
+> fclose(file_name);
+>
+> NULL;
+> end proc;
+print_data_var_assign := proc(posn_list::list(list(numeric)),
+data_var_name_prefix::string, file_name::string)
+ ftruncate(file_name);
+ map(proc(posn::list(numeric))
+ fprintf(file_name, "%s = %a;\n",
+ data_var_name(posn, data_var_name_prefix), DATA(op(posn)))
+ end proc, posn_list);
+ fclose(file_name);
+ NULL
+end proc
+
+>
+################################################################################
+>
+#
+# This function prints a sequence of C expression to store the interpolation
+# coefficients in COEFF(...) expressions, eg
+# COEFF(1,-1) = factor * coeff_dx_p1_m1;
+#
+# Arguments:
+# posn_list = The same list of positions as was used to compute the
+# interpolating polynomial.
+# RHS_factor_name = If this string is non-empty, then the coefficient is
+# multiplied by this factor before being stored, eg
+# setting this to "factor" would give the example above.
+# If this string is empty (""), the multiplication is
+# omitted, eg
+# COEFF(1,-1) = coeff_dx_p1_m1;
+# coeff_name_prefix = A prefix string for the coefficient names.
+# file_name = The file name to write the coefficients to. This is
+# truncated before writing.
+#
+> print_interp_coeff_var_store :=
+> proc(
+> posn_list::list(list(numeric)),
+> RHS_factor_name::string,
+> coeff_name_prefix::string,
+> file_name::string
+> )
+>
+> ftruncate(file_name);
+> map(
+> proc(posn::list(numeric))
+> if (length(RHS_factor_name) > 0)
+> then fprintf(file_name,
+> "%a = %s * %s;\n",
+> 'COEFF'(op(posn)),
+> RHS_factor_name,
+> coeff_name(posn,coeff_name_prefix));
+> else fprintf(file_name,
+> "%a = %s;\n",
+> 'COEFF'(op(posn)),
+> coeff_name(posn,coeff_name_prefix));
+> end if;
+> end proc
+> ,
+> posn_list
+> );
+> fclose(file_name);
+>
+> NULL;
+> end proc;
+print_interp_coeff_var_store := proc(posn_list::list(list(numeric)),
+RHS_factor_name::string, coeff_name_prefix::string, file_name::string)
+ ftruncate(file_name);
+ map(proc(posn::list(numeric))
+ if 0 < length(RHS_factor_name) then fprintf(file_name,
+ "%a = %s * %s;\n", 'COEFF'(op(posn)), RHS_factor_name,
+ coeff_name(posn, coeff_name_prefix))
+ else fprintf(file_name, "%a = %s;\n", 'COEFF'(op(posn)),
+ coeff_name(posn, coeff_name_prefix))
+ end if
+ end proc, posn_list);
+ fclose(file_name);
+ NULL
+end proc
+
+>
+################################################################################
+>
+#
+# This function prints a C expression to compute the interpolant,
+# using the coefficients computed by print_coeff__lc_of_data()
+# (i.e. expressing the interpolant as a linear combination of the
+# data values).
+#
+# Arguments:
+# posn_list = The same list of positions as was used to compute the
+# interpolating polynomial.
+# result_var_name = The (string) name of the variable to which the
+# result is to be assigned.
+# coeff_name_prefix = A prefix string for the coefficient names.
+# data_var_name_prefix = A prefix string for the data variable names.
+# file_name = The file name to write the coefficients to. This is
+# truncated before writing.
+#
+> print_interp_cmpt__lc_of_data :=
+> proc(
+> posn_list::list(list(numeric)),
+> result_var_name::string,
+> coeff_name_prefix::string,
+> data_var_name_prefix::string,
+> file_name::string
+> )
+>
+> ftruncate(file_name);
+>
+> fprintf(file_name, "%s =\n", result_var_name);
+>
+# list of "coeff*data_var" terms
+> map(
+> proc(posn::list(numeric))
+> sprintf("%s*%s",
+> coeff_name(posn,coeff_name_prefix),
+> data_var_name(posn,data_var_name_prefix));
+> end proc
+> ,
+> posn_list
+> );
+>
+> ListTools[Join](%, "\n\t+ ");
+> cat(op(%));
+> fprintf(file_name, "\t%s;\n", %);
+>
+> fclose(file_name);
+>
+> NULL;
+> end proc;
+print_interp_cmpt__lc_of_data := proc(posn_list::list(list(numeric)),
+result_var_name::string, coeff_name_prefix::string,
+data_var_name_prefix::string, file_name::string)
+ ftruncate(file_name);
+ fprintf(file_name, "%s =\n", result_var_name);
+ map(proc(posn::list(numeric))
+ sprintf("%s*%s", coeff_name(posn, coeff_name_prefix),
+ data_var_name(posn, data_var_name_prefix))
+ end proc, posn_list);
+ ListTools[Join](%, "\n\t+ ");
+ cat(op(%));
+ fprintf(file_name, "\t%s;\n", %);
+ fclose(file_name);
+ NULL
+end proc
+
+>
+################################################################################
+################################################################################
+################################################################################
+>
+#
+# This function computes the name of the coefficient of the data at a
+# given [m] position, i.e. it encapsulates our naming convention for this.
+#
+# Arguments:
+# posn = (in) The [m] coordinates.
+# name_prefix = A prefix string for the coefficient name.
+#
+# Results:
+# The function returns the coefficient, as a Maple string.
+#
+> coeff_name :=
+> proc(posn::list(numeric), name_prefix::string)
+> cat(name_prefix, sprint_numeric_list(posn));
+> end proc;
+coeff_name := proc(posn::list(numeric), name_prefix::string)
+ cat(name_prefix, sprint_numeric_list(posn))
+end proc
+
+>
+################################################################################
+>
+#
+# This function computes the name of the variable in which the C code
+# will store the input data at a given [m] position, i.e. it encapsulates
+# our naming convention for this.
+#
+# Arguments:
+# posn = (in) The [m] coordinates.
+# name_prefix = A prefix string for the variable name.
+#
+# Results:
+# The function returns the variable name, as a Maple string.
+#
+> data_var_name :=
+> proc(posn::list(numeric), name_prefix::string)
+> cat(name_prefix, sprint_numeric_list(posn));
+> end proc;
+data_var_name := proc(posn::list(numeric), name_prefix::string)
+ cat(name_prefix, sprint_numeric_list(posn))
+end proc
+
+# Maple code to compute lists of point positions in hypercube-shaped molecules
+# $Id: $
+>
+################################################################################
+>
+#
+# 1D interpolation points
+#
+> posn_list_1d_size2 := hypercube_points([ 0], [+1]);
+ posn_list_1d_size2 := [[0], [1]]
+
+> posn_list_1d_size3 := hypercube_points([-1], [+1]);
+ posn_list_1d_size3 := [[-1], [0], [1]]
+
+> posn_list_1d_size4 := hypercube_points([-1], [+2]);
+ posn_list_1d_size4 := [[-1], [0], [1], [2]]
+
+> posn_list_1d_size5 := hypercube_points([-2], [+2]);
+ posn_list_1d_size5 := [[-2], [-1], [0], [1], [2]]
+
+> posn_list_1d_size6 := hypercube_points([-2], [+3]);
+ posn_list_1d_size6 := [[-2], [-1], [0], [1], [2], [3]]
+
+> posn_list_1d_size7 := hypercube_points([-3], [+3]);
+ posn_list_1d_size7 := [[-3], [-2], [-1], [0], [1], [2], [3]]
+
+>
+################################################################################
+>
+#
+# 2D interpolation points (Fortran ordering)
+#
+> posn_list_2d_size2 := map(ListTools[Reverse],
+> hypercube_points([ 0, 0], [+1,+1]));
+ posn_list_2d_size2 := [[0, 0], [1, 0], [0, 1], [1, 1]]
+
+> posn_list_2d_size3 := map(ListTools[Reverse],
+> hypercube_points([-1,-1], [+1,+1]));
+posn_list_2d_size3 := [[-1, -1], [0, -1], [1, -1], [-1, 0], [0, 0], [1, 0],
+
+ [-1, 1], [0, 1], [1, 1]]
+
+> posn_list_2d_size4 := map(ListTools[Reverse],
+> hypercube_points([-1,-1], [+2,+2]));
+posn_list_2d_size4 := [[-1, -1], [0, -1], [1, -1], [2, -1], [-1, 0], [0, 0],
+
+ [1, 0], [2, 0], [-1, 1], [0, 1], [1, 1], [2, 1], [-1, 2], [0, 2], [1, 2],
+
+ [2, 2]]
+
+> posn_list_2d_size5 := map(ListTools[Reverse],
+> hypercube_points([-2,-2], [+2,+2]));
+posn_list_2d_size5 := [[-2, -2], [-1, -2], [0, -2], [1, -2], [2, -2], [-2, -1],
+
+ [-1, -1], [0, -1], [1, -1], [2, -1], [-2, 0], [-1, 0], [0, 0], [1, 0],
+
+ [2, 0], [-2, 1], [-1, 1], [0, 1], [1, 1], [2, 1], [-2, 2], [-1, 2], [0, 2],
+
+ [1, 2], [2, 2]]
+
+>
+################################################################################
+>
+#
+# 3D interpolation points (Fortran ordering)
+#
+> posn_list_3d_size2 := map(ListTools[Reverse],
+> hypercube_points([ 0, 0, 0], [+1,+1,+1]));
+posn_list_3d_size2 := [[0, 0, 0], [1, 0, 0], [0, 1, 0], [1, 1, 0], [0, 0, 1],
+
+ [1, 0, 1], [0, 1, 1], [1, 1, 1]]
+
+> posn_list_3d_size3 := map(ListTools[Reverse],
+> hypercube_points([-1,-1,-1], [+1,+1,+1]));
+posn_list_3d_size3 := [[-1, -1, -1], [0, -1, -1], [1, -1, -1], [-1, 0, -1],
+
+ [0, 0, -1], [1, 0, -1], [-1, 1, -1], [0, 1, -1], [1, 1, -1], [-1, -1, 0],
+
+ [0, -1, 0], [1, -1, 0], [-1, 0, 0], [0, 0, 0], [1, 0, 0], [-1, 1, 0],
+
+ [0, 1, 0], [1, 1, 0], [-1, -1, 1], [0, -1, 1], [1, -1, 1], [-1, 0, 1],
+
+ [0, 0, 1], [1, 0, 1], [-1, 1, 1], [0, 1, 1], [1, 1, 1]]
+
+> posn_list_3d_size4 := map(ListTools[Reverse],
+> hypercube_points([-1,-1,-1], [+2,+2,+2]));
+posn_list_3d_size4 := [[-1, -1, -1], [0, -1, -1], [1, -1, -1], [2, -1, -1],
+
+ [-1, 0, -1], [0, 0, -1], [1, 0, -1], [2, 0, -1], [-1, 1, -1], [0, 1, -1],
+
+ [1, 1, -1], [2, 1, -1], [-1, 2, -1], [0, 2, -1], [1, 2, -1], [2, 2, -1],
+
+ [-1, -1, 0], [0, -1, 0], [1, -1, 0], [2, -1, 0], [-1, 0, 0], [0, 0, 0],
+
+ [1, 0, 0], [2, 0, 0], [-1, 1, 0], [0, 1, 0], [1, 1, 0], [2, 1, 0],
+
+ [-1, 2, 0], [0, 2, 0], [1, 2, 0], [2, 2, 0], [-1, -1, 1], [0, -1, 1],
+
+ [1, -1, 1], [2, -1, 1], [-1, 0, 1], [0, 0, 1], [1, 0, 1], [2, 0, 1],
+
+ [-1, 1, 1], [0, 1, 1], [1, 1, 1], [2, 1, 1], [-1, 2, 1], [0, 2, 1],
+
+ [1, 2, 1], [2, 2, 1], [-1, -1, 2], [0, -1, 2], [1, -1, 2], [2, -1, 2],
+
+ [-1, 0, 2], [0, 0, 2], [1, 0, 2], [2, 0, 2], [-1, 1, 2], [0, 1, 2],
+
+ [1, 1, 2], [2, 1, 2], [-1, 2, 2], [0, 2, 2], [1, 2, 2], [2, 2, 2]]
+
+> posn_list_3d_size5 := map(ListTools[Reverse],
+> hypercube_points([-2,-2,-2], [+2,+2,+2]));
+posn_list_3d_size5 := [[-2, -2, -2], [-1, -2, -2], [0, -2, -2], [1, -2, -2],
+
+ [2, -2, -2], [-2, -1, -2], [-1, -1, -2], [0, -1, -2], [1, -1, -2],
+
+ [2, -1, -2], [-2, 0, -2], [-1, 0, -2], [0, 0, -2], [1, 0, -2], [2, 0, -2],
+
+ [-2, 1, -2], [-1, 1, -2], [0, 1, -2], [1, 1, -2], [2, 1, -2], [-2, 2, -2],
+
+ [-1, 2, -2], [0, 2, -2], [1, 2, -2], [2, 2, -2], [-2, -2, -1], [-1, -2, -1],
+
+ [0, -2, -1], [1, -2, -1], [2, -2, -1], [-2, -1, -1], [-1, -1, -1],
+
+ [0, -1, -1], [1, -1, -1], [2, -1, -1], [-2, 0, -1], [-1, 0, -1], [0, 0, -1],
+
+ [1, 0, -1], [2, 0, -1], [-2, 1, -1], [-1, 1, -1], [0, 1, -1], [1, 1, -1],
+
+ [2, 1, -1], [-2, 2, -1], [-1, 2, -1], [0, 2, -1], [1, 2, -1], [2, 2, -1],
+
+ [-2, -2, 0], [-1, -2, 0], [0, -2, 0], [1, -2, 0], [2, -2, 0], [-2, -1, 0],
+
+ [-1, -1, 0], [0, -1, 0], [1, -1, 0], [2, -1, 0], [-2, 0, 0], [-1, 0, 0],
+
+ [0, 0, 0], [1, 0, 0], [2, 0, 0], [-2, 1, 0], [-1, 1, 0], [0, 1, 0],
+
+ [1, 1, 0], [2, 1, 0], [-2, 2, 0], [-1, 2, 0], [0, 2, 0], [1, 2, 0],
+
+ [2, 2, 0], [-2, -2, 1], [-1, -2, 1], [0, -2, 1], [1, -2, 1], [2, -2, 1],
+
+ [-2, -1, 1], [-1, -1, 1], [0, -1, 1], [1, -1, 1], [2, -1, 1], [-2, 0, 1],
+
+ [-1, 0, 1], [0, 0, 1], [1, 0, 1], [2, 0, 1], [-2, 1, 1], [-1, 1, 1],
+
+ [0, 1, 1], [1, 1, 1], [2, 1, 1], [-2, 2, 1], [-1, 2, 1], [0, 2, 1],
+
+ [1, 2, 1], [2, 2, 1], [-2, -2, 2], [-1, -2, 2], [0, -2, 2], [1, -2, 2],
+
+ [2, -2, 2], [-2, -1, 2], [-1, -1, 2], [0, -1, 2], [1, -1, 2], [2, -1, 2],
+
+ [-2, 0, 2], [-1, 0, 2], [0, 0, 2], [1, 0, 2], [2, 0, 2], [-2, 1, 2],
+
+ [-1, 1, 2], [0, 1, 2], [1, 1, 2], [2, 1, 2], [-2, 2, 2], [-1, 2, 2],
+
+ [0, 2, 2], [1, 2, 2], [2, 2, 2]]
+
+# Maple code to define Lagrange interpolating functions/coords/coeffs
+# $Id: 1d.maple,v 1.4 2002/05/14 15:54:01 jthorn Exp $
+>
+################################################################################
+>
+#
+# 1-D interpolating functions
+#
+>
+> fn_1d_order1 :=
+> proc(x)
+> + c0 + c1*x
+> end proc;
+ fn_1d_order1 := proc(x) c0 + c1*x end proc
+
+>
+> fn_1d_order2 :=
+> proc(x)
+> + c0 + c1*x + c2*x^2
+> end proc;
+ fn_1d_order2 := proc(x) c0 + c1*x + c2*x^2 end proc
+
+>
+> fn_1d_order3 :=
+> proc(x)
+> + c0 + c1*x + c2*x^2 + c3*x^3
+> end proc;
+ fn_1d_order3 := proc(x) c0 + c1*x + c2*x^2 + c3*x^3 end proc
+
+>
+> fn_1d_order4 :=
+> proc(x)
+> + c0 + c1*x + c2*x^2 + c3*x^3 + c4*x^4
+> end;
+ fn_1d_order4 := proc(x) c0 + c1*x + c2*x^2 + c3*x^3 + c4*x^4 end proc
+
+>
+> fn_1d_order5 :=
+> proc(x)
+> + c0 + c1*x + c2*x^2 + c3*x^3 + c4*x^4 + c5*x^5
+> end;
+ fn_1d_order5 := proc(x) c0 + c1*x + c2*x^2 + c3*x^3 + c4*x^4 + c5*x^5 end proc
+
+>
+> fn_1d_order6 :=
+> proc(x)
+> + c0 + c1*x + c2*x^2 + c3*x^3 + c4*x^4 + c5*x^5 + c6*x^6
+> end;
+fn_1d_order6 :=
+
+ proc(x) c0 + c1*x + c2*x^2 + c3*x^3 + c4*x^4 + c5*x^5 + c6*x^6 end proc
+
+>
+########################################
+>
+# coordinates for 1-D interpolating functions
+> coord_list_1d := [x];
+ coord_list_1d := [x]
+
+>
+########################################
+>
+#
+# coefficients in 1-D interpolating functions
+#
+>
+> coeff_list_1d_order1 := [c0, c1];
+ coeff_list_1d_order1 := [c0, c1]
+
+> coeff_list_1d_order2 := [c0, c1, c2];
+ coeff_list_1d_order2 := [c0, c1, c2]
+
+> coeff_list_1d_order3 := [c0, c1, c2, c3];
+ coeff_list_1d_order3 := [c0, c1, c2, c3]
+
+> coeff_list_1d_order4 := [c0, c1, c2, c3, c4];
+ coeff_list_1d_order4 := [c0, c1, c2, c3, c4]
+
+> coeff_list_1d_order5 := [c0, c1, c2, c3, c4, c5];
+ coeff_list_1d_order5 := [c0, c1, c2, c3, c4, c5]
+
+> coeff_list_1d_order6 := [c0, c1, c2, c3, c4, c5, c6];
+ coeff_list_1d_order6 := [c0, c1, c2, c3, c4, c5, c6]
+
+>
+################################################################################
+>
+#
+# 2-D interpolating functions
+#
+>
+> fn_2d_order1 :=
+> proc(x,y)
+> + c01*y
+> + c00 + c10*x
+> end proc;
+ fn_2d_order1 := proc(x, y) c01*y + c00 + c10*x end proc
+
+>
+> fn_2d_order2 :=
+> proc(x,y)
+> + c02*y^2
+> + c01*y + c11*x*y
+> + c00 + c10*x + c20*x^2
+> end proc;
+fn_2d_order2 :=
+
+ proc(x, y) c02*y^2 + c01*y + c11*x*y + c00 + c10*x + c20*x^2 end proc
+
+>
+> fn_2d_order3 :=
+> proc(x,y)
+> + c03*y^3
+> + c02*y^2 + c12*x*y^2
+> + c01*y + c11*x*y + c21*x^2*y
+> + c00 + c10*x + c20*x^2 + c30*x^3
+> end proc;
+fn_2d_order3 := proc(x, y)
+ c03*y^3 + c02*y^2 + c12*x*y^2 + c01*y + c11*x*y + c21*x^2*y + c00
+ + c10*x + c20*x^2 + c30*x^3
+end proc
+
+>
+> fn_2d_order4 :=
+> proc(x,y)
+> + c04*y^4
+> + c03*y^3 + c13*x*y^3
+> + c02*y^2 + c12*x*y^2 + c22*x^2*y^2
+> + c01*y + c11*x*y + c21*x^2*y + c31*x^3*y
+> + c00 + c10*x + c20*x^2 + c30*x^3 + c40*x^4
+> end;
+fn_2d_order4 := proc(x, y)
+ c04*y^4 + c03*y^3 + c13*x*y^3 + c02*y^2 + c12*x*y^2 + c22*x^2*y^2
+ + c01*y + c11*x*y + c21*x^2*y + c31*x^3*y + c00 + c10*x + c20*x^2
+ + c30*x^3 + c40*x^4
+end proc
+
+>
+########################################
+>
+# coordinates for 2-D interpolating functions
+> coord_list_2d := [x,y];
+ coord_list_2d := [x, y]
+
+>
+########################################
+>
+#
+# coefficients in 2-D interpolating functions
+#
+>
+> coeff_list_2d_order1 := [
+> c01,
+> c00, c10
+> ];
+ coeff_list_2d_order1 := [c01, c00, c10]
+
+> coeff_list_2d_order2 := [
+> c02,
+> c01, c11,
+> c00, c10, c20
+> ];
+ coeff_list_2d_order2 := [c02, c01, c11, c00, c10, c20]
+
+> coeff_list_2d_order3 := [
+> c03,
+> c02, c12,
+> c01, c11, c21,
+> c00, c10, c20, c30
+> ];
+ coeff_list_2d_order3 := [c03, c02, c12, c01, c11, c21, c00, c10, c20, c30]
+
+> coeff_list_2d_order4 := [
+> c04,
+> c03, c13,
+> c02, c12, c22,
+> c01, c11, c21, c31,
+> c00, c10, c20, c30, c40
+> ];
+coeff_list_2d_order4 :=
+
+ [c04, c03, c13, c02, c12, c22, c01, c11, c21, c31, c00, c10, c20, c30, c40]
+
+>
+################################################################################
+>
+#
+# 3-D interpolating functions
+#
+>
+> fn_3d_order1 :=
+> proc(x,y,z)
+# z^0 -----------
+> + c010*y
+> + c000 + c100*x
+# z^1 -----------
+> + c001*z
+> end proc;
+ fn_3d_order1 := proc(x, y, z) c010*y + c000 + c100*x + c001*z end proc
+
+>
+> fn_3d_order2 :=
+> proc(x,y,z)
+# z^0 --------------------------
+> + c020*y^2
+> + c010*y + c110*x*y
+> + c000 + c100*x + c200*x^2
+# z^1 --------------------------
+> + c011*y*z
+> + c001*z + c101*x*z
+# z^2 --------------------------
+> + c002*z^2
+> end proc;
+fn_3d_order2 := proc(x, y, z)
+ c020*y^2 + c010*y + c110*x*y + c000 + c100*x + c200*x^2 + c011*y*z
+ + c001*z + c101*x*z + c002*z^2
+end proc
+
+>
+> fn_3d_order3 :=
+> proc(x,y,z)
+# z^0 -------------------------------------------
+> + c030*y^3
+> + c020*y^2 + c120*x*y^2
+> + c010*y + c110*x*y + c210*x^2*y
+> + c000 + c100*x + c200*x^2 + c300*x^3
+# z^1 -------------------------------------------
+> + c021*y^2*z
+> + c011*y *z + c111*x*y*z
+> + c001 *z + c101*x *z + c201*x^2*z
+# z^2 -------------------------------------------
+> + c012*y*z^2
+> + c002 *z^2 + c102*x*z^2
+# z^3 -------------------------------------------
+> + c003 *z^3
+> end proc;
+fn_3d_order3 := proc(x, y, z)
+ c030*y^3 + c020*y^2 + c120*x*y^2 + c010*y + c110*x*y + c210*x^2*y
+ + c000 + c100*x + c200*x^2 + c300*x^3 + c021*y^2*z + c011*y*z
+ + c111*x*y*z + c001*z + c101*x*z + c201*x^2*z + c012*y*z^2 + c002*z^2
+ + c102*x*z^2 + c003*z^3
+end proc
+
+>
+> fn_3d_order4 :=
+> proc(x,y,z)
+# z^0 --------------------------------------------------------
+> + c040*y^4
+> + c030*y^3 + c130*x*y^3
+> + c020*y^2 + c120*x*y^2 + c220*x^2*y^2
+> + c010*y + c110*x*y + c210*x^2*y + c310*x^3*y
+> + c000 + c100*x + c200*x^2 + c300*x^3 + c400*x^4
+# z^1 -------------------------------------------
+> + c031*y^3*z
+> + c021*y^2*z + c121*x*y^2*z
+> + c011*y *z + c111*x*y *z + c211*x^2*y*z
+> + c001 *z + c101*x *z + c201*x^2 *z + c301*x^3*z
+# z^2 -------------------------------------------
+> + c022*y^2*z^2
+> + c012*y *z^2 + c112*x*y*z^2
+> + c002 *z^2 + c102*x *z^2 + c202*x^2*z^2
+# z^3 -------------------------------------------
+> + c013*y *z^3
+> + c003 *z^3 + c103*x *z^3
+# z^4 -------------------------------------------
+> + c004 *z^4
+> end;
+fn_3d_order4 := proc(x, y, z)
+ c102*x*z^2 + c012*y*z^2 + c111*x*y*z + c121*x*y^2*z + c211*x^2*y*z
+ + c112*x*y*z^2 + c010*y + c000 + c100*x + c001*z + c020*y^2 + c110*x*y
+ + c011*y*z + c101*x*z + c200*x^2 + c002*z^2 + c030*y^3 + c300*x^3
+ + c003*z^3 + c040*y^4 + c400*x^4 + c004*z^4 + c120*x*y^2 + c210*x^2*y
+ + c021*y^2*z + c201*x^2*z + c130*x*y^3 + c220*x^2*y^2 + c310*x^3*y
+ + c031*y^3*z + c301*x^3*z + c022*y^2*z^2 + c202*x^2*z^2 + c013*y*z^3
+ + c103*x*z^3
+end proc
+
+>
+########################################
+>
+# coordinates for 3-D interpolating functions
+> coord_list_3d := [x,y,z];
+ coord_list_3d := [x, y, z]
+
+>
+########################################
+>
+#
+# coefficients in 3-D interpolating functions
+#
+>
+> coeff_list_3d_order1 := [
+> # z^0 -----
+> c010,
+> c000, c100,
+> # z^1 -----
+> c001
+> ];
+ coeff_list_3d_order1 := [c010, c000, c100, c001]
+
+> coeff_list_3d_order2 := [
+> # z^0 -----------
+> c020,
+> c010, c110,
+> c000, c100, c200,
+> # z^1 -----------
+> c011,
+> c001, c101,
+> # z^2 -----------
+> c002
+> ];
+coeff_list_3d_order2 :=
+
+ [c020, c010, c110, c000, c100, c200, c011, c001, c101, c002]
+
+> coeff_list_3d_order3 := [
+> # z^0 ----------------
+> c030,
+> c020, c120,
+> c010, c110, c210,
+> c000, c100, c200, c300,
+> # z^1 ----------------
+> c021,
+> c011, c111,
+> c001, c101, c201,
+> # z^2 ----------------
+> c012,
+> c002, c102,
+> # z^3 ----------------
+> c003
+> ];
+coeff_list_3d_order3 := [c030, c020, c120, c010, c110, c210, c000, c100, c200,
+
+ c300, c021, c011, c111, c001, c101, c201, c012, c002, c102, c003]
+
+> coeff_list_3d_order4 := [
+> # z^0 -----------------------
+> c040,
+> c030, c130,
+> c020, c120, c220,
+> c010, c110, c210, c310,
+> c000, c100, c200, c300, c400,
+> # z^1 -----------------------
+> c031,
+> c021, c121,
+> c011, c111, c211,
+> c001, c101, c201, c301,
+> # z^2 -----------------------
+> c022,
+> c012, c112,
+> c002, c102, c202,
+> # z^3 -----------------------
+> c013,
+> c003, c103,
+> # z^4 -----------------------
+> c004
+> ];
+coeff_list_3d_order4 := [c040, c030, c130, c020, c120, c220, c010, c110, c210,
+
+ c310, c000, c100, c200, c300, c400, c031, c021, c121, c011, c111, c211,
+
+ c001, c101, c201, c301, c022, c012, c112, c002, c102, c202, c013, c003,
+
+ c103, c004]
+
+>
+################################################################################
+# 2d.maple -- compute Lagrange interpolation coefficients in 2-D
+# $Id: $
+>
+################################################################################
+>
+#
+# 2d, cube, order=1, smoothing=0 (size=2)
+#
+>
+# interpolating polynomial
+> interp_2d_cube_order1_smooth0
+> := Lagrange_polynomial_interpolant(fn_2d_order1, coeff_list_2d_order1,
+> coord_list_2d, posn_list_2d_size2);
+interp_2d_cube_order1_smooth0 :=
+
+ (1/2 DATA(1, 1) - 1/2 DATA(0, 0) - 1/2 DATA(1, 0) + 1/2 DATA(0, 1)) y
+
+ - 1/4 DATA(1, 1) + 3/4 DATA(0, 0) + 1/4 DATA(1, 0) + 1/4 DATA(0, 1)
+
+ + (1/2 DATA(1, 1) - 1/2 DATA(0, 0) + 1/2 DATA(1, 0) - 1/2 DATA(0, 1)) x
+
+>
+# I
+> coeff_as_lc_of_data(%, posn_list_2d_size2);
+[COEFF(0, 0) = 3/4 - 1/2 y - 1/2 x, COEFF(1, 0) = 1/4 - 1/2 y + 1/2 x,
+
+ COEFF(0, 1) = - 1/2 x + 1/4 + 1/2 y, COEFF(1, 1) = 1/2 y - 1/4 + 1/2 x]
+
+> print_coeff__lc_of_data(%, "coeff_I_", "fp",
+> "2d.coeffs/2d.cube.order1.smooth0/coeff-I.compute.c");
+bytes used=1000160, alloc=917336, time=0.07
+>
+# d/dx
+> simplify( diff(interp_2d_cube_order1_smooth0,x) );
+ 1/2 DATA(1, 1) - 1/2 DATA(0, 0) + 1/2 DATA(1, 0) - 1/2 DATA(0, 1)
+
+> coeff_as_lc_of_data(%, posn_list_2d_size2);
+ [COEFF(0, 0) = -1/2, COEFF(1, 0) = 1/2, COEFF(0, 1) = -1/2, COEFF(1, 1) = 1/2]
+
+> print_coeff__lc_of_data(%, "coeff_dx_", "fp",
+> "2d.coeffs/2d.cube.order1.smooth0/coeff-dx.compute.c");
+>
+# d/dy
+> simplify( diff(interp_2d_cube_order1_smooth0,y) );
+ 1/2 DATA(1, 1) - 1/2 DATA(0, 0) - 1/2 DATA(1, 0) + 1/2 DATA(0, 1)
+
+> coeff_as_lc_of_data(%, posn_list_2d_size2);
+ [COEFF(0, 0) = -1/2, COEFF(1, 0) = -1/2, COEFF(0, 1) = 1/2, COEFF(1, 1) = 1/2]
+
+> print_coeff__lc_of_data(%, "coeff_dy_", "fp",
+> "2d.coeffs/2d.cube.order1.smooth0/coeff-dy.compute.c");
+bytes used=2000328, alloc=1376004, time=0.15
+>
+################################################################################
+>
+#
+# 2d, cube, order=2, smoothing=0 (size=3)
+#
+>
+# interpolating polynomial
+> interp_2d_cube_order2_smooth0
+> := Lagrange_polynomial_interpolant(fn_2d_order2, coeff_list_2d_order2,
+> coord_list_2d, posn_list_2d_size3);
+interp_2d_cube_order2_smooth0 := (1/6 DATA(0, -1) + 1/6 DATA(-1, -1)
+
+ - 1/3 DATA(-1, 0) - 1/3 DATA(1, 0) + 1/6 DATA(1, -1) + 1/6 DATA(-1, 1)
+
+ 2
+ + 1/6 DATA(1, 1) - 1/3 DATA(0, 0) + 1/6 DATA(0, 1)) y + (1/6 DATA(-1, 1)
+
+ - 1/6 DATA(1, -1) - 1/6 DATA(0, -1) - 1/6 DATA(-1, -1) + 1/6 DATA(0, 1)
+
+ + 1/6 DATA(1, 1)) y +
+
+ (1/4 DATA(1, 1) - 1/4 DATA(1, -1) + 1/4 DATA(-1, -1) - 1/4 DATA(-1, 1)) x y
+
+ + 2/9 DATA(0, -1) - 1/9 DATA(-1, -1) + 2/9 DATA(-1, 0) + 2/9 DATA(1, 0)
+
+ - 1/9 DATA(1, -1) - 1/9 DATA(-1, 1) - 1/9 DATA(1, 1) + 5/9 DATA(0, 0)
+
+ + 2/9 DATA(0, 1) + (- 1/6 DATA(-1, -1) - 1/6 DATA(-1, 0) + 1/6 DATA(1, 0)
+
+ + 1/6 DATA(1, -1) - 1/6 DATA(-1, 1) + 1/6 DATA(1, 1)) x + (
+
+ 1/6 DATA(-1, -1) + 1/6 DATA(-1, 0) + 1/6 DATA(1, 0) + 1/6 DATA(1, -1)
+
+ - 1/3 DATA(0, -1) + 1/6 DATA(-1, 1) + 1/6 DATA(1, 1) - 1/3 DATA(0, 0)
+
+ 2
+ - 1/3 DATA(0, 1)) x
+
+>
+# I
+> coeff_as_lc_of_data(%, posn_list_2d_size3);
+ 2 2
+[COEFF(-1, -1) = - 1/6 y + 1/6 y - 1/9 - 1/6 x + 1/4 x y + 1/6 x ,
+
+ 2 2
+ COEFF(0, -1) = - 1/6 y + 2/9 + 1/6 y - 1/3 x ,
+
+ 2 2
+ COEFF(1, -1) = - 1/6 y - 1/4 x y + 1/6 x + 1/6 y - 1/9 + 1/6 x ,
+
+ 2 2
+ COEFF(-1, 0) = - 1/3 y + 2/9 + 1/6 x - 1/6 x,
+
+ 2 2
+ COEFF(0, 0) = - 1/3 y - 1/3 x + 5/9,
+
+ 2 2
+ COEFF(1, 0) = 2/9 - 1/3 y + 1/6 x + 1/6 x,
+
+ 2 2
+ COEFF(-1, 1) = 1/6 y + 1/6 y + 1/6 x - 1/4 x y - 1/6 x - 1/9,
+
+ 2 2
+ COEFF(0, 1) = 1/6 y - 1/3 x + 2/9 + 1/6 y ,
+
+ 2 2
+ COEFF(1, 1) = 1/6 y + 1/6 y + 1/6 x - 1/9 + 1/4 x y + 1/6 x]
+
+> print_coeff__lc_of_data(%, "coeff_I_", "fp",
+> "2d.coeffs/2d.cube.order2.smooth0/coeff-I.compute.c");
+bytes used=3000520, alloc=1769148, time=0.22
+bytes used=4002236, alloc=1834672, time=0.30
+>
+# d/dx
+> simplify( diff(interp_2d_cube_order2_smooth0,x) );
+1/4 y DATA(1, 1) - 1/4 y DATA(1, -1) + 1/4 y DATA(-1, -1) - 1/4 y DATA(-1, 1)
+
+ - 1/6 DATA(-1, -1) - 1/6 DATA(-1, 0) + 1/6 DATA(1, 0) + 1/6 DATA(1, -1)
+
+ - 1/6 DATA(-1, 1) + 1/6 DATA(1, 1) + 1/3 x DATA(-1, -1)
+
+ + 1/3 x DATA(-1, 0) + 1/3 x DATA(1, 0) + 1/3 x DATA(1, -1)
+
+ - 2/3 x DATA(0, -1) + 1/3 x DATA(-1, 1) + 1/3 x DATA(1, 1)
+
+ - 2/3 x DATA(0, 0) - 2/3 x DATA(0, 1)
+
+> coeff_as_lc_of_data(%, posn_list_2d_size3);
+[COEFF(-1, -1) = 1/4 y - 1/6 + 1/3 x, COEFF(0, -1) = - 2/3 x,
+
+ COEFF(1, -1) = 1/6 + 1/3 x - 1/4 y, COEFF(-1, 0) = - 1/6 + 1/3 x,
+
+ COEFF(0, 0) = - 2/3 x, COEFF(1, 0) = 1/6 + 1/3 x,
+
+ COEFF(-1, 1) = - 1/4 y - 1/6 + 1/3 x, COEFF(0, 1) = - 2/3 x,
+
+ COEFF(1, 1) = 1/4 y + 1/3 x + 1/6]
+
+> print_coeff__lc_of_data(%, "coeff_dx_", "fp",
+> "2d.coeffs/2d.cube.order2.smooth0/coeff-dx.compute.c");
+bytes used=5002436, alloc=1834672, time=0.38
+>
+# d/dy
+> simplify( diff(interp_2d_cube_order2_smooth0,y) );
+1/3 y DATA(0, -1) + 1/3 y DATA(-1, -1) - 2/3 y DATA(-1, 0) - 2/3 y DATA(1, 0)
+
+ + 1/3 y DATA(1, -1) + 1/3 y DATA(-1, 1) + 1/3 y DATA(1, 1)
+
+ - 2/3 y DATA(0, 0) + 1/3 y DATA(0, 1) + 1/6 DATA(-1, 1) - 1/6 DATA(1, -1)
+
+ - 1/6 DATA(0, -1) - 1/6 DATA(-1, -1) + 1/6 DATA(0, 1) + 1/6 DATA(1, 1)
+
+ + 1/4 x DATA(1, 1) - 1/4 x DATA(1, -1) + 1/4 x DATA(-1, -1)
+
+ - 1/4 x DATA(-1, 1)
+
+> coeff_as_lc_of_data(%, posn_list_2d_size3);
+[COEFF(-1, -1) = - 1/6 + 1/4 x + 1/3 y, COEFF(0, -1) = 1/3 y - 1/6,
+
+ COEFF(1, -1) = 1/3 y - 1/6 - 1/4 x, COEFF(-1, 0) = - 2/3 y,
+
+ COEFF(0, 0) = - 2/3 y, COEFF(1, 0) = - 2/3 y,
+
+ COEFF(-1, 1) = 1/3 y - 1/4 x + 1/6, COEFF(0, 1) = 1/6 + 1/3 y,
+
+ COEFF(1, 1) = 1/6 + 1/3 y + 1/4 x]
+
+> print_coeff__lc_of_data(%, "coeff_dy_", "fp",
+> "2d.coeffs/2d.cube.order2.smooth0/coeff-dy.compute.c");
+>
+# d^2/dx^2
+> simplify( diff(interp_2d_cube_order2_smooth0,x,x) );
+1/3 DATA(-1, -1) + 1/3 DATA(-1, 0) + 1/3 DATA(1, 0) + 1/3 DATA(1, -1)
+
+ - 2/3 DATA(0, -1) + 1/3 DATA(-1, 1) + 1/3 DATA(1, 1) - 2/3 DATA(0, 0)
+
+ - 2/3 DATA(0, 1)
+
+> coeff_as_lc_of_data(%, posn_list_2d_size3);
+bytes used=6002660, alloc=1834672, time=0.47
+[COEFF(-1, -1) = 1/3, COEFF(0, -1) = -2/3, COEFF(1, -1) = 1/3,
+
+ COEFF(-1, 0) = 1/3, COEFF(0, 0) = -2/3, COEFF(1, 0) = 1/3,
+
+ COEFF(-1, 1) = 1/3, COEFF(0, 1) = -2/3, COEFF(1, 1) = 1/3]
+
+> print_coeff__lc_of_data(%, "coeff_dxx_", "fp",
+> "2d.coeffs/2d.cube.order2.smooth0/coeff-dxx.compute.c");
+>
+# d^2/dxdy
+> simplify( diff(interp_2d_cube_order2_smooth0,x,y) );
+ 1/4 DATA(1, 1) - 1/4 DATA(1, -1) + 1/4 DATA(-1, -1) - 1/4 DATA(-1, 1)
+
+> coeff_as_lc_of_data(%, posn_list_2d_size3);
+[COEFF(-1, -1) = 1/4, COEFF(0, -1) = 0, COEFF(1, -1) = -1/4, COEFF(-1, 0) = 0,
+
+ COEFF(0, 0) = 0, COEFF(1, 0) = 0, COEFF(-1, 1) = -1/4, COEFF(0, 1) = 0,
+
+ COEFF(1, 1) = 1/4]
+
+> print_coeff__lc_of_data(%, "coeff_dxy_", "fp",
+> "2d.coeffs/2d.cube.order2.smooth0/coeff-dxy.compute.c");
+>
+# d^2/dy^2
+> simplify( diff(interp_2d_cube_order2_smooth0,y,y) );
+1/3 DATA(0, -1) + 1/3 DATA(-1, -1) - 2/3 DATA(-1, 0) - 2/3 DATA(1, 0)
+
+ + 1/3 DATA(1, -1) + 1/3 DATA(-1, 1) + 1/3 DATA(1, 1) - 2/3 DATA(0, 0)
+
+ + 1/3 DATA(0, 1)
+
+> coeff_as_lc_of_data(%, posn_list_2d_size3);
+[COEFF(-1, -1) = 1/3, COEFF(0, -1) = 1/3, COEFF(1, -1) = 1/3,
+
+ COEFF(-1, 0) = -2/3, COEFF(0, 0) = -2/3, COEFF(1, 0) = -2/3,
+
+ COEFF(-1, 1) = 1/3, COEFF(0, 1) = 1/3, COEFF(1, 1) = 1/3]
+
+> print_coeff__lc_of_data(%, "coeff_dyy_", "fp",
+> "2d.coeffs/2d.cube.order2.smooth0/coeff-dyy.compute.c");
+>
+################################################################################
+>
+#
+# 2d, cube, order=3, smoothing=0 (size=4)
+#
+>
+# interpolating polynomial
+> interp_2d_cube_order3_smooth0
+> := Lagrange_polynomial_interpolant(fn_2d_order3, coeff_list_2d_order3,
+> coord_list_2d, posn_list_2d_size4);
+bytes used=7003016, alloc=1834672, time=0.54
+bytes used=8003280, alloc=1900196, time=0.60
+bytes used=9003556, alloc=1965720, time=0.67
+bytes used=10003800, alloc=1965720, time=0.74
+bytes used=11003984, alloc=1965720, time=0.80
+interp_2d_cube_order3_smooth0 := (1/40 DATA(0, 0) - 1/40 DATA(1, 0)
+
+ + 1/40 DATA(0, 1) - 1/40 DATA(1, 1) + 3/40 DATA(-1, 0) + 1/40 DATA(1, -1)
+
+ - 1/40 DATA(0, -1) - 3/40 DATA(-1, -1) + 3/40 DATA(-1, 1)
+
+ + 1/40 DATA(1, 2) + 3/40 DATA(2, 2) - 3/40 DATA(2, 0) - 3/40 DATA(2, 1)
+
+ 2 /
+ - 3/40 DATA(-1, 2) - 1/40 DATA(0, 2) + 3/40 DATA(2, -1)) x y + |
+ \
+
+ - 1/25 DATA(0, 0) - 1/100 DATA(1, 0) - 1/100 DATA(0, 1) + 3/50 DATA(1, 1)
+
+ 13
+ - 1/50 DATA(-1, 0) - --- DATA(1, -1) - 1/50 DATA(0, -1)
+ 100
+
+ 13
+ + 6/25 DATA(-1, -1) - --- DATA(-1, 1) + 2/25 DATA(1, 2) - 3/50 DATA(2, 2)
+ 100
+
+ + 7/100 DATA(2, 0) + 2/25 DATA(2, 1) - 9/100 DATA(-1, 2)
+
+ \
+ + 7/100 DATA(0, 2) - 9/100 DATA(2, -1)| x y + (1/40 DATA(0, 0)
+ /
+
+ + 1/40 DATA(1, 0) - 1/40 DATA(0, 1) - 1/40 DATA(1, 1) - 1/40 DATA(-1, 0)
+
+ + 3/40 DATA(1, -1) + 3/40 DATA(0, -1) - 3/40 DATA(-1, -1)
+
+ + 1/40 DATA(-1, 1) - 3/40 DATA(1, 2) + 3/40 DATA(2, 2) - 1/40 DATA(2, 0)
+
+ + 1/40 DATA(2, 1) + 3/40 DATA(-1, 2) - 3/40 DATA(0, 2) - 3/40 DATA(2, -1))
+
+ 2 93 37 37 17
+ x y + --- DATA(0, 0) + --- DATA(1, 0) + --- DATA(0, 1) - --- DATA(1, 1)
+ 200 200 200 200
+
+ 11 11 23
+ + -- DATA(-1, 0) - 1/50 DATA(1, -1) + -- DATA(0, -1) - --- DATA(-1, -1)
+ 50 50 200
+
+ - 1/50 DATA(-1, 1) + (1/8 DATA(0, 0) + 1/8 DATA(1, 0) - 1/8 DATA(0, 1)
+
+ - 1/8 DATA(1, 1) + 1/8 DATA(-1, 0) - 1/24 DATA(1, -1) - 1/24 DATA(0, -1)
+
+ - 1/24 DATA(-1, -1) - 1/8 DATA(-1, 1) + 1/24 DATA(1, 2) + 1/24 DATA(2, 2)
+
+ + 1/8 DATA(2, 0) - 1/8 DATA(2, 1) + 1/24 DATA(-1, 2) + 1/24 DATA(0, 2)
+
+ 3 / 21 19
+ - 1/24 DATA(2, -1)) y + |- -- DATA(0, 0) - -- DATA(1, 0)
+ \ 80 80
+
+ 11 23
+ + 9/80 DATA(0, 1) + -- DATA(1, 1) - -- DATA(-1, 0) + 9/80 DATA(1, -1)
+ 80 80
+
+ 11 13
+ + -- DATA(0, -1) + -- DATA(-1, -1) + 7/80 DATA(-1, 1) - 1/80 DATA(1, 2)
+ 80 80
+
+ 17 13
+ - 3/80 DATA(2, 2) - -- DATA(2, 0) + -- DATA(2, 1) + 3/80 DATA(-1, 2)
+ 80 80
+
+ \ 2 / 57
+ + 1/80 DATA(0, 2) + 7/80 DATA(2, -1)| y + |- --- DATA(0, 0)
+ / \ 400
+
+ 63 117 103 31
+ - --- DATA(1, 0) + --- DATA(0, 1) + --- DATA(1, 1) - --- DATA(-1, 0)
+ 400 400 400 400
+
+ 157 223 109
+ - ---- DATA(1, -1) - ---- DATA(0, -1) - ---- DATA(-1, -1)
+ 1200 1200 1200
+
+ 111 37 149 49
+ + --- DATA(-1, 1) + ---- DATA(1, 2) - ---- DATA(2, 2) - --- DATA(2, 0)
+ 400 1200 1200 400
+
+ 69 131 43 89 \
+ + --- DATA(2, 1) - ---- DATA(-1, 2) + ---- DATA(0, 2) + ---- DATA(2, -1)|
+ 400 1200 1200 1200 /
+
+ / 57 117 63 103
+ y + |- --- DATA(0, 0) + --- DATA(1, 0) - --- DATA(0, 1) + --- DATA(1, 1)
+ \ 400 400 400 400
+
+ 223 111 31 109
+ - ---- DATA(-1, 0) + --- DATA(1, -1) - --- DATA(0, -1) - ---- DATA(-1, -1)
+ 1200 400 400 1200
+
+ 157 69 149 43
+ - ---- DATA(-1, 1) + --- DATA(1, 2) - ---- DATA(2, 2) + ---- DATA(2, 0)
+ 1200 400 1200 1200
+
+ 37 89 49 131 \
+ + ---- DATA(2, 1) + ---- DATA(-1, 2) - --- DATA(0, 2) - ---- DATA(2, -1)|
+ 1200 1200 400 1200 /
+
+ / 21 19 11
+ x + |- -- DATA(0, 0) + 9/80 DATA(1, 0) - -- DATA(0, 1) + -- DATA(1, 1)
+ \ 80 80 80
+
+ 11 23 13
+ + -- DATA(-1, 0) + 7/80 DATA(1, -1) - -- DATA(0, -1) + -- DATA(-1, -1)
+ 80 80 80
+
+ 13
+ + 9/80 DATA(-1, 1) + -- DATA(1, 2) - 3/80 DATA(2, 2) + 1/80 DATA(2, 0)
+ 80
+
+ 17 \
+ - 1/80 DATA(2, 1) + 7/80 DATA(-1, 2) - -- DATA(0, 2) + 3/80 DATA(2, -1)|
+ 80 /
+
+ 2
+ x + (1/8 DATA(0, 0) - 1/8 DATA(1, 0) + 1/8 DATA(0, 1) - 1/8 DATA(1, 1)
+
+ - 1/24 DATA(-1, 0) - 1/8 DATA(1, -1) + 1/8 DATA(0, -1) - 1/24 DATA(-1, -1)
+
+ - 1/24 DATA(-1, 1) + 1/24 DATA(2, 1) - 1/8 DATA(1, 2) + 1/24 DATA(2, 2)
+
+ + 1/24 DATA(2, 0) - 1/24 DATA(-1, 2) + 1/8 DATA(0, 2) + 1/24 DATA(2, -1))
+
+ 3 13
+ x - 2/25 DATA(1, 2) + 7/200 DATA(2, 2) + --- DATA(2, 0) - 2/25 DATA(2, 1)
+ 100
+
+ 17 13 17
+ - --- DATA(-1, 2) + --- DATA(0, 2) - --- DATA(2, -1)
+ 200 100 200
+
+>
+# I
+> coeff_as_lc_of_data(%, posn_list_2d_size4);
+bytes used=12006624, alloc=1965720, time=0.86
+ 13 2 3 2 3 13 2
+[COEFF(-1, -1) = -- y - 1/24 y - 3/40 x y - 1/24 x + 6/25 x y + -- x
+ 80 80
+
+ 2 109 23 109 2 3
+ - 3/40 x y - ---- x - --- - ---- y, COEFF(0, -1) = - 1/40 x y + 1/8 x
+ 1200 200 1200
+
+ 2 23 2 11 3 31 11 2 223
+ - 1/50 x y + 3/40 x y - -- x + -- - 1/24 y - --- x + -- y - ---- y,
+ 80 50 400 80 1200
+
+ 2 2 2 3 111
+ COEFF(1, -1) = 9/80 y + 3/40 x y + 1/40 x y - 1/24 y - 1/50 + --- x
+ 400
+
+ 157 2 13 3
+ - ---- y + 7/80 x - --- x y - 1/8 x , COEFF(2, -1) = - 9/100 x y
+ 1200 100
+
+ 2 2 3 89 17 2 3
+ + 3/40 x y + 7/80 y - 1/24 y + ---- y - --- - 3/40 x y + 1/24 x
+ 1200 200
+
+ 131 2 11 31 2
+ - ---- x + 3/80 x , COEFF(-1, 0) = -- - 1/50 x y - --- y + 3/40 x y
+ 1200 50 400
+
+ 223 3 23 2 2 11 2 3
+ - ---- x - 1/24 x - -- y - 1/40 x y + -- x + 1/8 y , COEFF(0, 0) =
+ 1200 80 80
+
+ 21 2 21 2 3 3 57 57 2
+ - 1/25 x y - -- y - -- x + 1/8 x + 1/8 y - --- x - --- y + 1/40 x y
+ 80 80 400 400
+
+ 2 93 19 2 63 2
+ + 1/40 x y + ---, COEFF(1, 0) = - -- y - --- y - 1/40 x y - 1/100 x y
+ 200 80 400
+
+ 3 2 117 37 3 2
+ + 1/8 y + 9/80 x + --- x + --- - 1/8 x + 1/40 x y, COEFF(2, 0) =
+ 400 200
+
+ 17 2 2 49 3 2 3 2
+ - -- y + 1/80 x - --- y + 1/8 y - 1/40 x y + 1/24 x - 3/40 x y
+ 80 400
+
+ 13 43 2 157
+ + 7/100 x y + --- + ---- x, COEFF(-1, 1) = 1/40 x y - 1/50 - ---- x
+ 100 1200 1200
+
+ 111 3 3 2 13 2 2
+ + --- y - 1/24 x - 1/8 y + 3/40 x y - --- x y + 7/80 y + 9/80 x ,
+ 400 100
+
+ 2 37 3 63 19 2 3
+ COEFF(0, 1) = - 1/40 x y + --- + 1/8 x - --- x - -- x - 1/8 y
+ 200 400 80
+
+ 2 117 2 103 2
+ + 1/40 x y + --- y + 9/80 y - 1/100 x y, COEFF(1, 1) = --- y - 1/40 x y
+ 400 400
+
+ 11 2 11 2 103 3 2 17 3
+ + -- x + -- y + 3/50 x y + --- x - 1/8 x - 1/40 x y - --- - 1/8 y ,
+ 80 80 400 200
+
+ 3 2 2 37 3 2
+ COEFF(2, 1) = - 1/8 y + 1/40 x y - 3/40 x y + ---- x + 1/24 x - 1/80 x
+ 1200
+
+ 13 2 69 2 89
+ - 2/25 + -- y + --- y + 2/25 x y, COEFF(-1, 2) = 3/80 y + ---- x
+ 80 400 1200
+
+ 2 131 2 2 3 3
+ + 3/40 x y - ---- y - 3/40 x y + 7/80 x + 1/24 y - 9/100 x y - 1/24 x
+ 1200
+
+ 17 49 3 43 2 2
+ - ---, COEFF(0, 2) = - --- x + 1/24 y + ---- y - 3/40 x y + 1/80 y
+ 200 400 1200
+
+ 17 2 2 13 3 69
+ - -- x - 1/40 x y + --- + 7/100 x y + 1/8 x , COEFF(1, 2) = --- x
+ 80 100 400
+
+ 2 2 2 37 3 13 2
+ - 3/40 x y - 1/80 y + 1/40 x y + ---- y - 2/25 + 1/24 y + -- x
+ 1200 80
+
+ 3 2 3 3 2
+ + 2/25 x y - 1/8 x , COEFF(2, 2) = 3/40 x y + 1/24 x + 1/24 y - 3/80 x
+
+ 149 149 2 2
+ - 3/50 x y - ---- y - ---- x + 3/40 x y - 3/80 y + 7/200]
+ 1200 1200
+
+> print_coeff__lc_of_data(%, "coeff_I_", "fp",
+> "2d.coeffs/2d.cube.order3.smooth0/coeff-I.compute.c");
+bytes used=13006948, alloc=2031244, time=0.93
+bytes used=14011252, alloc=2031244, time=1.01
+bytes used=15011472, alloc=2031244, time=1.11
+bytes used=16011652, alloc=2031244, time=1.19
+bytes used=17011812, alloc=2031244, time=1.29
+bytes used=18012000, alloc=2031244, time=1.39
+bytes used=19012216, alloc=2031244, time=1.50
+bytes used=20012436, alloc=2031244, time=1.62
+>
+# d/dx
+> simplify( diff(interp_2d_cube_order3_smooth0,x) );
+bytes used=21013024, alloc=2031244, time=1.73
+3/20 x y DATA(-1, 2) + 1/20 x y DATA(0, 0) + 1/20 x y DATA(1, 0)
+
+ - 1/20 x y DATA(0, 1) - 1/20 x y DATA(1, 1) - 1/20 x y DATA(-1, 0)
+
+ + 3/20 x y DATA(1, -1) + 3/20 x y DATA(0, -1) - 3/20 x y DATA(-1, -1)
+
+ 57 117 63 103
+ - --- DATA(0, 0) + --- DATA(1, 0) - --- DATA(0, 1) + --- DATA(1, 1)
+ 400 400 400 400
+
+ 2
+ + 1/20 x y DATA(-1, 1) - 3/20 x y DATA(1, 2) - 1/8 x DATA(-1, 2)
+
+ 2 2 2
+ + 3/8 x DATA(0, 2) + 1/8 x DATA(2, -1) + 1/8 x DATA(2, 1)
+
+ 2
+ + 1/8 x DATA(2, 0) - 3/20 x y DATA(2, -1) - 3/20 x y DATA(0, 2)
+
+ + 1/20 x y DATA(2, 1) - 1/20 x y DATA(2, 0) + 3/20 x y DATA(2, 2)
+
+ + 2/25 y DATA(2, 1) + 7/100 y DATA(2, 0) + 2/25 y DATA(1, 2)
+
+ - 9/100 y DATA(2, -1) + 7/100 y DATA(0, 2) - 9/100 y DATA(-1, 2)
+
+ 13
+ - 1/50 y DATA(0, -1) - --- y DATA(1, -1) - 1/50 y DATA(-1, 0)
+ 100
+
+ 2 13
+ - 3/50 y DATA(2, 2) + 3/40 y DATA(2, -1) - --- y DATA(-1, 1)
+ 100
+
+ 2
+ + 6/25 y DATA(-1, -1) + 1/40 y DATA(1, 2) - 1/100 y DATA(0, 1)
+
+ - 1/100 y DATA(1, 0) - 1/25 y DATA(0, 0) + 3/50 y DATA(1, 1)
+
+ 2 2 2
+ - 1/40 y DATA(0, 2) - 3/40 y DATA(2, 1) - 3/40 y DATA(2, 0)
+
+ 2 2 2
+ + 3/40 y DATA(2, 2) - 3/40 y DATA(-1, 2) + 3/40 y DATA(-1, 1)
+
+ 2 2 2
+ - 1/40 y DATA(0, -1) + 1/40 y DATA(1, -1) + 3/40 y DATA(-1, 0)
+
+ 2 2 2
+ - 3/40 y DATA(-1, -1) + 1/40 y DATA(0, 1) - 1/40 y DATA(1, 0)
+
+ 2 11
+ + 1/40 y DATA(0, 0) + -- x DATA(-1, 0) + 9/40 x DATA(1, 0)
+ 40
+
+ 19 2 21 13
+ - -- x DATA(0, 1) - 1/40 y DATA(1, 1) - -- x DATA(0, 0) + -- x DATA(1, 2)
+ 40 40 40
+
+ 23 13 11
+ - -- x DATA(0, -1) + -- x DATA(-1, -1) + -- x DATA(1, 1)
+ 40 40 40
+
+ + 7/40 x DATA(1, -1) + 9/40 x DATA(-1, 1) - 3/40 x DATA(2, 2)
+
+ + 1/40 x DATA(2, 0) - 1/40 x DATA(2, 1) + 7/40 x DATA(-1, 2)
+
+ 2 2 17
+ - 3/8 x DATA(1, 0) + 3/8 x DATA(0, 1) - -- x DATA(0, 2)
+ 40
+
+ 2 2
+ + 3/40 x DATA(2, -1) - 3/8 x DATA(1, -1) + 3/8 x DATA(0, -1)
+
+ 2 2 2
+ + 3/8 x DATA(0, 0) - 3/8 x DATA(1, 1) - 1/8 x DATA(-1, 0)
+
+ 2 2 2
+ - 3/8 x DATA(1, 2) - 1/8 x DATA(-1, -1) - 1/8 x DATA(-1, 1)
+
+ 2 223 111 31
+ + 1/8 x DATA(2, 2) - ---- DATA(-1, 0) + --- DATA(1, -1) - --- DATA(0, -1)
+ 1200 400 400
+
+ 109 157 69 149
+ - ---- DATA(-1, -1) - ---- DATA(-1, 1) + --- DATA(1, 2) - ---- DATA(2, 2)
+ 1200 1200 400 1200
+
+ 43 37 89 49
+ + ---- DATA(2, 0) + ---- DATA(2, 1) + ---- DATA(-1, 2) - --- DATA(0, 2)
+ 1200 1200 1200 400
+
+ 131
+ - ---- DATA(2, -1)
+ 1200
+
+> coeff_as_lc_of_data(%, posn_list_2d_size4);
+bytes used=22015264, alloc=2031244, time=1.80
+ 13 2 109 2
+[COEFF(-1, -1) = -- x - 1/8 x - ---- + 6/25 y - 3/20 x y - 3/40 y ,
+ 40 1200
+
+ 31 2 2 23
+ COEFF(0, -1) = - --- + 3/8 x - 1/40 y - -- x - 1/50 y + 3/20 x y,
+ 400 40
+
+ 2 111 2 13
+ COEFF(1, -1) = 3/20 x y + 1/40 y + 7/40 x + --- - 3/8 x - --- y,
+ 400 100
+
+ 2 131 2
+ COEFF(2, -1) = 1/8 x - 9/100 y - 3/20 x y - ---- + 3/40 y + 3/40 x,
+ 1200
+
+ 223 2 11 2
+ COEFF(-1, 0) = - ---- + 3/40 y - 1/20 x y - 1/50 y + -- x - 1/8 x ,
+ 1200 40
+
+ 57 21 2 2
+ COEFF(0, 0) = - --- - -- x + 3/8 x - 1/25 y + 1/40 y + 1/20 x y,
+ 400 40
+
+ 117 2 2
+ COEFF(1, 0) = 9/40 x + --- - 1/40 y - 1/100 y - 3/8 x + 1/20 x y,
+ 400
+
+ 2 43 2
+ COEFF(2, 0) = 1/8 x + ---- - 3/40 y + 1/40 x - 1/20 x y + 7/100 y,
+ 1200
+
+ 2 157 13 2
+ COEFF(-1, 1) = 1/20 x y - 1/8 x + 9/40 x - ---- - --- y + 3/40 y ,
+ 1200 100
+
+ 63 2 19 2
+ COEFF(0, 1) = - --- - 1/100 y + 3/8 x - 1/20 x y - -- x + 1/40 y ,
+ 400 40
+
+ 11 2 2 103
+ COEFF(1, 1) = - 1/20 x y + -- x - 1/40 y - 3/8 x + 3/50 y + ---,
+ 40 400
+
+ 2 2 37
+ COEFF(2, 1) = - 1/40 x + 1/20 x y + 1/8 x - 3/40 y + ---- + 2/25 y,
+ 1200
+
+ 89 2 2
+ COEFF(-1, 2) = - 9/100 y + 3/20 x y + ---- - 3/40 y + 7/40 x - 1/8 x ,
+ 1200
+
+ 2 2 17 49
+ COEFF(0, 2) = - 1/40 y - 3/20 x y + 7/100 y + 3/8 x - -- x - ---,
+ 40 400
+
+ 2 13 69 2
+ COEFF(1, 2) = - 3/8 x + -- x + --- - 3/20 x y + 2/25 y + 1/40 y ,
+ 40 400
+
+ 149 2 2
+ COEFF(2, 2) = 3/20 x y - ---- + 1/8 x - 3/40 x + 3/40 y - 3/50 y]
+ 1200
+
+> print_coeff__lc_of_data(%, "coeff_dx_", "fp",
+> "2d.coeffs/2d.cube.order3.smooth0/coeff-dx.compute.c");
+bytes used=23015460, alloc=2031244, time=1.87
+bytes used=24015620, alloc=2031244, time=1.96
+bytes used=25016144, alloc=2096768, time=2.07
+bytes used=26016296, alloc=2096768, time=2.18
+>
+# d/dy
+> simplify( diff(interp_2d_cube_order3_smooth0,y) );
+bytes used=27016596, alloc=2096768, time=2.28
+- 3/20 x y DATA(-1, 2) + 1/20 x y DATA(0, 0) - 1/20 x y DATA(1, 0)
+
+ + 1/20 x y DATA(0, 1) - 1/20 x y DATA(1, 1) + 3/20 x y DATA(-1, 0)
+
+ + 1/20 x y DATA(1, -1) - 1/20 x y DATA(0, -1) - 3/20 x y DATA(-1, -1)
+
+ 57 63 117 103
+ - --- DATA(0, 0) - --- DATA(1, 0) + --- DATA(0, 1) + --- DATA(1, 1)
+ 400 400 400 400
+
+ 2
+ + 3/20 x y DATA(-1, 1) + 1/20 x y DATA(1, 2) + 3/40 x DATA(-1, 2)
+
+ 2 2 2
+ - 3/40 x DATA(0, 2) - 3/40 x DATA(2, -1) + 1/40 x DATA(2, 1)
+
+ 2
+ - 1/40 x DATA(2, 0) + 3/20 x y DATA(2, -1) - 1/20 x y DATA(0, 2)
+
+ - 3/20 x y DATA(2, 1) - 3/20 x y DATA(2, 0) + 3/20 x y DATA(2, 2)
+
+ 13 17
+ + -- y DATA(2, 1) - -- y DATA(2, 0) - 1/40 y DATA(1, 2)
+ 40 40
+
+ + 7/40 y DATA(2, -1) + 1/40 y DATA(0, 2) + 3/40 y DATA(-1, 2)
+
+ 11 23
+ + -- y DATA(0, -1) + 9/40 y DATA(1, -1) - -- y DATA(-1, 0)
+ 40 40
+
+ 2
+ - 3/40 y DATA(2, 2) - 1/8 y DATA(2, -1) + 7/40 y DATA(-1, 1)
+
+ 13 2
+ + -- y DATA(-1, -1) + 1/8 y DATA(1, 2) + 9/40 y DATA(0, 1)
+ 40
+
+ 19 21 11 2
+ - -- y DATA(1, 0) - -- y DATA(0, 0) + -- y DATA(1, 1) + 1/8 y DATA(0, 2)
+ 40 40 40
+
+ 2 2 2
+ - 3/8 y DATA(2, 1) + 3/8 y DATA(2, 0) + 1/8 y DATA(2, 2)
+
+ 2 2 2
+ + 1/8 y DATA(-1, 2) - 3/8 y DATA(-1, 1) - 1/8 y DATA(0, -1)
+
+ 2 2 2
+ - 1/8 y DATA(1, -1) + 3/8 y DATA(-1, 0) - 1/8 y DATA(-1, -1)
+
+ 2 2 2
+ - 3/8 y DATA(0, 1) + 3/8 y DATA(1, 0) + 3/8 y DATA(0, 0)
+
+ - 1/50 x DATA(-1, 0) - 1/100 x DATA(1, 0) - 1/100 x DATA(0, 1)
+
+ 2
+ - 3/8 y DATA(1, 1) - 1/25 x DATA(0, 0) + 2/25 x DATA(1, 2)
+
+ - 1/50 x DATA(0, -1) + 6/25 x DATA(-1, -1) + 3/50 x DATA(1, 1)
+
+ 13 13
+ - --- x DATA(1, -1) - --- x DATA(-1, 1) - 3/50 x DATA(2, 2)
+ 100 100
+
+ + 7/100 x DATA(2, 0) + 2/25 x DATA(2, 1) - 9/100 x DATA(-1, 2)
+
+ 2 2
+ + 1/40 x DATA(1, 0) - 1/40 x DATA(0, 1) + 7/100 x DATA(0, 2)
+
+ 2 2
+ - 9/100 x DATA(2, -1) + 3/40 x DATA(1, -1) + 3/40 x DATA(0, -1)
+
+ 2 2 2
+ + 1/40 x DATA(0, 0) - 1/40 x DATA(1, 1) - 1/40 x DATA(-1, 0)
+
+ 2 2 2
+ - 3/40 x DATA(1, 2) - 3/40 x DATA(-1, -1) + 1/40 x DATA(-1, 1)
+
+ 2 31 157
+ + 3/40 x DATA(2, 2) - --- DATA(-1, 0) - ---- DATA(1, -1)
+ 400 1200
+
+ 223 109 111 37
+ - ---- DATA(0, -1) - ---- DATA(-1, -1) + --- DATA(-1, 1) + ---- DATA(1, 2)
+ 1200 1200 400 1200
+
+ 149 49 69 131
+ - ---- DATA(2, 2) - --- DATA(2, 0) + --- DATA(2, 1) - ---- DATA(-1, 2)
+ 1200 400 400 1200
+
+ 43 89
+ + ---- DATA(0, 2) + ---- DATA(2, -1)
+ 1200 1200
+
+> coeff_as_lc_of_data(%, posn_list_2d_size4);
+ 2 109 2 13
+[COEFF(-1, -1) = - 1/8 y - ---- - 3/40 x + -- y + 6/25 x - 3/20 x y,
+ 1200 40
+
+ 2 2 223 11
+ COEFF(0, -1) = - 1/8 y + 3/40 x - 1/50 x - ---- - 1/20 x y + -- y,
+ 1200 40
+
+ 13 2 2 157
+ COEFF(1, -1) = - --- x - 1/8 y + 9/40 y + 3/40 x - ---- + 1/20 x y,
+ 100 1200
+
+ 2 2 89
+ COEFF(2, -1) = - 1/8 y + 3/20 x y + 7/40 y - 3/40 x - 9/100 x + ----,
+ 1200
+
+ 23 2 31 2
+ COEFF(-1, 0) = - -- y - 1/50 x + 3/8 y - --- - 1/40 x + 3/20 x y,
+ 40 400
+
+ 21 57 2 2
+ COEFF(0, 0) = - -- y - --- + 1/20 x y - 1/25 x + 3/8 y + 1/40 x ,
+ 40 400
+
+ 2 63 2 19
+ COEFF(1, 0) = - 1/100 x + 3/8 y - --- - 1/20 x y + 1/40 x - -- y,
+ 400 40
+
+ 2 49 17 2
+ COEFF(2, 0) = 3/8 y + 7/100 x - --- - -- y - 1/40 x - 3/20 x y,
+ 400 40
+
+ 2 2 111 13
+ COEFF(-1, 1) = - 3/8 y + 1/40 x + 3/20 x y + --- + 7/40 y - --- x,
+ 400 100
+
+ 117 2 2
+ COEFF(0, 1) = --- - 1/100 x - 1/40 x + 9/40 y + 1/20 x y - 3/8 y ,
+ 400
+
+ 11 103 2 2
+ COEFF(1, 1) = -- y + --- - 3/8 y + 3/50 x - 1/40 x - 1/20 x y,
+ 40 400
+
+ 2 2 69 13
+ COEFF(2, 1) = - 3/8 y + 1/40 x + 2/25 x - 3/20 x y + --- + -- y,
+ 400 40
+
+ 2 2 131
+ COEFF(-1, 2) = 1/8 y + 3/40 x + 3/40 y - 9/100 x - ---- - 3/20 x y,
+ 1200
+
+ 2 43 2
+ COEFF(0, 2) = 7/100 x - 1/20 x y - 3/40 x + 1/40 y + ---- + 1/8 y ,
+ 1200
+
+ 2 2 37
+ COEFF(1, 2) = 1/8 y + 2/25 x - 3/40 x - 1/40 y + ---- + 1/20 x y,
+ 1200
+
+ 2 2 149
+ COEFF(2, 2) = 1/8 y + 3/20 x y - 3/50 x + 3/40 x - ---- - 3/40 y]
+ 1200
+
+> print_coeff__lc_of_data(%, "coeff_dy_", "fp",
+> "2d.coeffs/2d.cube.order3.smooth0/coeff-dy.compute.c");
+bytes used=28017044, alloc=2096768, time=2.36
+bytes used=29017220, alloc=2096768, time=2.45
+bytes used=30017984, alloc=2096768, time=2.55
+bytes used=31018144, alloc=2096768, time=2.67
+>
+# d^2/dx^2
+> simplify( diff(interp_2d_cube_order3_smooth0,x,x) );
+ 21 19 11
+- -- DATA(0, 0) + 9/40 DATA(1, 0) - -- DATA(0, 1) + -- DATA(1, 1)
+ 40 40 40
+
+ + 1/20 y DATA(2, 1) - 1/20 y DATA(2, 0) - 3/20 y DATA(1, 2)
+
+ - 3/20 y DATA(2, -1) - 3/20 y DATA(0, 2) + 3/20 y DATA(-1, 2)
+
+ + 3/20 y DATA(0, -1) + 3/20 y DATA(1, -1) - 1/20 y DATA(-1, 0)
+
+ + 3/20 y DATA(2, 2) + 1/20 y DATA(-1, 1) - 3/20 y DATA(-1, -1)
+
+ - 1/20 y DATA(0, 1) + 1/20 y DATA(1, 0) + 1/20 y DATA(0, 0)
+
+ - 1/20 y DATA(1, 1) - 1/4 x DATA(-1, 0) - 3/4 x DATA(1, 0)
+
+ + 3/4 x DATA(0, 1) + 3/4 x DATA(0, 0) - 3/4 x DATA(1, 2)
+
+ + 3/4 x DATA(0, -1) - 1/4 x DATA(-1, -1) - 3/4 x DATA(1, 1)
+
+ - 3/4 x DATA(1, -1) - 1/4 x DATA(-1, 1) + 1/4 x DATA(2, 2)
+
+ + 1/4 x DATA(2, 0) + 1/4 x DATA(2, 1) - 1/4 x DATA(-1, 2)
+
+ 11
+ + 3/4 x DATA(0, 2) + 1/4 x DATA(2, -1) + -- DATA(-1, 0) + 7/40 DATA(1, -1)
+ 40
+
+ 23 13 13
+ - -- DATA(0, -1) + -- DATA(-1, -1) + 9/40 DATA(-1, 1) + -- DATA(1, 2)
+ 40 40 40
+
+ - 3/40 DATA(2, 2) + 1/40 DATA(2, 0) - 1/40 DATA(2, 1) + 7/40 DATA(-1, 2)
+
+ 17
+ - -- DATA(0, 2) + 3/40 DATA(2, -1)
+ 40
+
+> coeff_as_lc_of_data(%, posn_list_2d_size4);
+bytes used=32018340, alloc=2096768, time=2.81
+ 13 23
+[COEFF(-1, -1) = - 3/20 y - 1/4 x + --, COEFF(0, -1) = - -- + 3/20 y + 3/4 x,
+ 40 40
+
+ COEFF(1, -1) = 7/40 + 3/20 y - 3/4 x,
+
+ COEFF(2, -1) = - 3/20 y + 1/4 x + 3/40,
+
+ 11 21
+ COEFF(-1, 0) = - 1/4 x + -- - 1/20 y, COEFF(0, 0) = 1/20 y - -- + 3/4 x,
+ 40 40
+
+ COEFF(1, 0) = 9/40 + 1/20 y - 3/4 x, COEFF(2, 0) = 1/40 - 1/20 y + 1/4 x,
+
+ 19
+ COEFF(-1, 1) = - 1/4 x + 1/20 y + 9/40, COEFF(0, 1) = - 1/20 y - -- + 3/4 x,
+ 40
+
+ 11
+ COEFF(1, 1) = - 1/20 y + -- - 3/4 x, COEFF(2, 1) = 1/20 y + 1/4 x - 1/40,
+ 40
+
+ 17
+ COEFF(-1, 2) = 3/20 y - 1/4 x + 7/40, COEFF(0, 2) = - -- - 3/20 y + 3/4 x,
+ 40
+
+ 13
+ COEFF(1, 2) = -- - 3/20 y - 3/4 x, COEFF(2, 2) = - 3/40 + 1/4 x + 3/20 y]
+ 40
+
+> print_coeff__lc_of_data(%, "coeff_dxx_", "fp",
+> "2d.coeffs/2d.cube.order3.smooth0/coeff-dxx.compute.c");
+bytes used=33018592, alloc=2096768, time=2.91
+>
+# d^2/dxdy
+> simplify( diff(interp_2d_cube_order3_smooth0,x,y) );
+bytes used=34018772, alloc=2096768, time=3.02
+- 1/25 DATA(0, 0) - 1/100 DATA(1, 0) - 1/100 DATA(0, 1) + 3/50 DATA(1, 1)
+
+ - 3/20 y DATA(2, 1) - 3/20 y DATA(2, 0) + 1/20 y DATA(1, 2)
+
+ + 3/20 y DATA(2, -1) - 1/20 y DATA(0, 2) - 3/20 y DATA(-1, 2)
+
+ - 1/20 y DATA(0, -1) + 1/20 y DATA(1, -1) + 3/20 y DATA(-1, 0)
+
+ + 3/20 y DATA(2, 2) + 3/20 y DATA(-1, 1) - 3/20 y DATA(-1, -1)
+
+ + 1/20 y DATA(0, 1) - 1/20 y DATA(1, 0) + 1/20 y DATA(0, 0)
+
+ - 1/20 y DATA(1, 1) - 1/20 x DATA(-1, 0) + 1/20 x DATA(1, 0)
+
+ - 1/20 x DATA(0, 1) + 1/20 x DATA(0, 0) - 3/20 x DATA(1, 2)
+
+ + 3/20 x DATA(0, -1) - 3/20 x DATA(-1, -1) - 1/20 x DATA(1, 1)
+
+ + 3/20 x DATA(1, -1) + 1/20 x DATA(-1, 1) + 3/20 x DATA(2, 2)
+
+ - 1/20 x DATA(2, 0) + 1/20 x DATA(2, 1) + 3/20 x DATA(-1, 2)
+
+ - 3/20 x DATA(0, 2) - 3/20 x DATA(2, -1) - 1/50 DATA(-1, 0)
+
+ 13 13
+ - --- DATA(1, -1) - 1/50 DATA(0, -1) + 6/25 DATA(-1, -1) - --- DATA(-1, 1)
+ 100 100
+
+ + 2/25 DATA(1, 2) - 3/50 DATA(2, 2) + 7/100 DATA(2, 0) + 2/25 DATA(2, 1)
+
+ - 9/100 DATA(-1, 2) + 7/100 DATA(0, 2) - 9/100 DATA(2, -1)
+
+> coeff_as_lc_of_data(%, posn_list_2d_size4);
+[COEFF(-1, -1) = - 3/20 y - 3/20 x + 6/25,
+
+ 13
+ COEFF(0, -1) = 3/20 x - 1/20 y - 1/50, COEFF(1, -1) = 3/20 x + 1/20 y - ---,
+ 100
+
+ COEFF(2, -1) = - 9/100 - 3/20 x + 3/20 y,
+
+ COEFF(-1, 0) = - 1/50 - 1/20 x + 3/20 y,
+
+ COEFF(0, 0) = - 1/25 + 1/20 y + 1/20 x,
+
+ COEFF(1, 0) = - 1/100 + 1/20 x - 1/20 y,
+
+ COEFF(2, 0) = - 1/20 x + 7/100 - 3/20 y,
+
+ 13
+ COEFF(-1, 1) = - --- + 1/20 x + 3/20 y,
+ 100
+
+ COEFF(0, 1) = - 1/20 x - 1/100 + 1/20 y,
+
+ COEFF(1, 1) = 3/50 - 1/20 x - 1/20 y,
+
+ COEFF(2, 1) = - 3/20 y + 1/20 x + 2/25,
+
+ COEFF(-1, 2) = - 3/20 y + 3/20 x - 9/100,
+
+ COEFF(0, 2) = 7/100 - 3/20 x - 1/20 y,
+
+ COEFF(1, 2) = - 3/20 x + 1/20 y + 2/25,
+
+ COEFF(2, 2) = 3/20 x + 3/20 y - 3/50]
+
+> print_coeff__lc_of_data(%, "coeff_dxy_", "fp",
+> "2d.coeffs/2d.cube.order3.smooth0/coeff-dxy.compute.c");
+bytes used=35018968, alloc=2096768, time=3.11
+>
+# d^2/dy^2
+> simplify( diff(interp_2d_cube_order3_smooth0,y,y) );
+ 21 19 11
+- -- DATA(0, 0) - -- DATA(1, 0) + 9/40 DATA(0, 1) + -- DATA(1, 1)
+ 40 40 40
+
+ - 3/4 y DATA(2, 1) + 3/4 y DATA(2, 0) + 1/4 y DATA(1, 2)
+
+ - 1/4 y DATA(2, -1) + 1/4 y DATA(0, 2) + 1/4 y DATA(-1, 2)
+
+ - 1/4 y DATA(0, -1) - 1/4 y DATA(1, -1) + 3/4 y DATA(-1, 0)
+
+ + 1/4 y DATA(2, 2) - 3/4 y DATA(-1, 1) - 1/4 y DATA(-1, -1)
+
+ - 3/4 y DATA(0, 1) + 3/4 y DATA(1, 0) + 3/4 y DATA(0, 0)
+
+ - 3/4 y DATA(1, 1) + 3/20 x DATA(-1, 0) - 1/20 x DATA(1, 0)
+
+ + 1/20 x DATA(0, 1) + 1/20 x DATA(0, 0) + 1/20 x DATA(1, 2)
+
+ - 1/20 x DATA(0, -1) - 3/20 x DATA(-1, -1) - 1/20 x DATA(1, 1)
+
+ + 1/20 x DATA(1, -1) + 3/20 x DATA(-1, 1) + 3/20 x DATA(2, 2)
+
+ - 3/20 x DATA(2, 0) - 3/20 x DATA(2, 1) - 3/20 x DATA(-1, 2)
+
+ 23
+ - 1/20 x DATA(0, 2) + 3/20 x DATA(2, -1) - -- DATA(-1, 0)
+ 40
+
+ 11 13
+ + 9/40 DATA(1, -1) + -- DATA(0, -1) + -- DATA(-1, -1) + 7/40 DATA(-1, 1)
+ 40 40
+
+ 17 13
+ - 1/40 DATA(1, 2) - 3/40 DATA(2, 2) - -- DATA(2, 0) + -- DATA(2, 1)
+ 40 40
+
+ + 3/40 DATA(-1, 2) + 1/40 DATA(0, 2) + 7/40 DATA(2, -1)
+
+> coeff_as_lc_of_data(%, posn_list_2d_size4);
+bytes used=36019260, alloc=2096768, time=3.25
+ 13 11
+[COEFF(-1, -1) = - 1/4 y + -- - 3/20 x, COEFF(0, -1) = - 1/20 x - 1/4 y + --,
+ 40 40
+
+ COEFF(1, -1) = - 1/4 y + 1/20 x + 9/40,
+
+ 23
+ COEFF(2, -1) = 3/20 x - 1/4 y + 7/40, COEFF(-1, 0) = 3/4 y - -- + 3/20 x,
+ 40
+
+ 21 19
+ COEFF(0, 0) = - -- + 1/20 x + 3/4 y, COEFF(1, 0) = - -- + 3/4 y - 1/20 x,
+ 40 40
+
+ 17
+ COEFF(2, 0) = - 3/20 x + 3/4 y - --, COEFF(-1, 1) = 3/20 x - 3/4 y + 7/40,
+ 40
+
+ 11
+ COEFF(0, 1) = 1/20 x + 9/40 - 3/4 y, COEFF(1, 1) = - 1/20 x + -- - 3/4 y,
+ 40
+
+ 13
+ COEFF(2, 1) = - 3/20 x + -- - 3/4 y, COEFF(-1, 2) = - 3/20 x + 1/4 y + 3/40,
+ 40
+
+ COEFF(0, 2) = 1/4 y + 1/40 - 1/20 x, COEFF(1, 2) = 1/20 x - 1/40 + 1/4 y,
+
+ COEFF(2, 2) = 3/20 x + 1/4 y - 3/40]
+
+> print_coeff__lc_of_data(%, "coeff_dyy_", "fp",
+> "2d.coeffs/2d.cube.order3.smooth0/coeff-dyy.compute.c");
+bytes used=37019440, alloc=2096768, time=3.33
+>
+################################################################################
+>
+#
+# 2d, cube, order=4, smoothing=0 (size=5)
+#
+>
+# interpolating polynomial
+> interp_2d_cube_order4_smooth0
+> := Lagrange_polynomial_interpolant(fn_2d_order4, coeff_list_2d_order4,
+> coord_list_2d, posn_list_2d_size5);
+bytes used=38019764, alloc=2096768, time=3.45
+bytes used=39020548, alloc=2096768, time=3.52
+bytes used=40020708, alloc=2162292, time=3.58
+bytes used=41022132, alloc=2162292, time=3.65
+bytes used=42022568, alloc=2162292, time=3.72
+bytes used=43024680, alloc=2162292, time=3.78
+ 541 246
+interp_2d_cube_order4_smooth0 := ---- DATA(0, 0) + ---- DATA(1, 0)
+ 1225 1225
+
+ 246 24 246 24
+ + ---- DATA(0, 1) - ---- DATA(1, 1) + ---- DATA(-1, 0) - ---- DATA(1, -1)
+ 1225 1225 1225 1225
+
+ 246 24 24
+ + ---- DATA(0, -1) - ---- DATA(-1, -1) - ---- DATA(-1, 1) + (
+ 1225 1225 1225
+
+ - 1/30 DATA(1, 0) - 1/30 DATA(1, 1) + 1/30 DATA(-1, 0) - 1/30 DATA(1, -1)
+
+ + 1/30 DATA(-1, -1) + 1/30 DATA(-1, 1) - 1/30 DATA(1, 2) + 1/60 DATA(2, 2)
+
+ + 1/60 DATA(2, 0) + 1/60 DATA(2, 1) + 1/30 DATA(-1, 2) + 1/60 DATA(2, -1)
+
+ - 1/60 DATA(-2, 2) - 1/60 DATA(-2, 1) - 1/60 DATA(-2, -1)
+
+ - 1/60 DATA(-2, 0) + 1/60 DATA(2, -2) + 1/30 DATA(-1, -2)
+
+ 3
+ - 1/30 DATA(1, -2) - 1/60 DATA(-2, -2)) x + (1/20 DATA(0, 0)
+
+ - 1/30 DATA(1, 0) + 1/20 DATA(0, 1) - 1/30 DATA(1, 1) - 1/30 DATA(-1, 0)
+
+ - 1/30 DATA(1, -1) + 1/20 DATA(0, -1) - 1/30 DATA(-1, -1)
+
+ - 1/30 DATA(-1, 1) - 1/30 DATA(1, 2) + 1/120 DATA(2, 2) + 1/120 DATA(2, 0)
+
+ + 1/120 DATA(2, 1) - 1/30 DATA(-1, 2) + 1/20 DATA(0, 2)
+
+ + 1/120 DATA(2, -1) + 1/120 DATA(-2, 2) + 1/120 DATA(-2, 1)
+
+ + 1/120 DATA(-2, -1) + 1/120 DATA(-2, 0) + 1/120 DATA(2, -2)
+
+ - 1/30 DATA(-1, -2) + 1/20 DATA(0, -2) - 1/30 DATA(1, -2)
+
+ 4
+ + 1/120 DATA(-2, -2)) x + (1/20 DATA(0, 0) + 1/20 DATA(1, 0)
+
+ - 1/30 DATA(0, 1) - 1/30 DATA(1, 1) + 1/20 DATA(-1, 0) - 1/30 DATA(1, -1)
+
+ - 1/30 DATA(0, -1) - 1/30 DATA(-1, -1) - 1/30 DATA(-1, 1)
+
+ + 1/120 DATA(1, 2) + 1/120 DATA(2, 2) + 1/20 DATA(2, 0) - 1/30 DATA(2, 1)
+
+ + 1/120 DATA(-1, 2) + 1/120 DATA(0, 2) - 1/30 DATA(2, -1)
+
+ + 1/120 DATA(-2, 2) - 1/30 DATA(-2, 1) - 1/30 DATA(-2, -1)
+
+ + 1/20 DATA(-2, 0) + 1/120 DATA(2, -2) + 1/120 DATA(-1, -2)
+
+ 4 /
+ + 1/120 DATA(0, -2) + 1/120 DATA(1, -2) + 1/120 DATA(-2, -2)) y + |
+ \
+
+ 17 31 31 17
+ --- DATA(0, 1) + --- DATA(1, 1) - --- DATA(1, -1) - --- DATA(0, -1)
+ 105 210 210 105
+
+ 31 31 31
+ - --- DATA(-1, -1) + --- DATA(-1, 1) + 1/84 DATA(1, 2) - --- DATA(2, 2)
+ 210 210 420
+
+ 11 17 11
+ + --- DATA(2, 1) + 1/84 DATA(-1, 2) + --- DATA(0, 2) - --- DATA(2, -1)
+ 105 420 105
+
+ 31 11 11 31
+ - --- DATA(-2, 2) + --- DATA(-2, 1) - --- DATA(-2, -1) + --- DATA(2, -2)
+ 420 105 105 420
+
+ 17
+ - 1/84 DATA(-1, -2) - --- DATA(0, -2) - 1/84 DATA(1, -2)
+ 420
+
+ 31 \ /17 31 17
+ + --- DATA(-2, -2)| y + |--- DATA(1, 0) + --- DATA(1, 1) - --- DATA(-1, 0)
+ 420 / \105 210 105
+
+ 31 31 31 11
+ + --- DATA(1, -1) - --- DATA(-1, -1) - --- DATA(-1, 1) + --- DATA(1, 2)
+ 210 210 210 105
+
+ 31 17 11
+ - --- DATA(2, 2) + --- DATA(2, 0) + 1/84 DATA(2, 1) - --- DATA(-1, 2)
+ 420 420 105
+
+ 31
+ + 1/84 DATA(2, -1) + --- DATA(-2, 2) - 1/84 DATA(-2, 1)
+ 420
+
+ 17 31 11
+ - 1/84 DATA(-2, -1) - --- DATA(-2, 0) - --- DATA(2, -2) - --- DATA(-1, -2)
+ 420 420 105
+
+ 11 31 \ / 57
+ + --- DATA(1, -2) + --- DATA(-2, -2)| x + |- --- DATA(0, 0)
+ 105 420 / \ 196
+
+ 83 53 181 83
+ + --- DATA(1, 0) - --- DATA(0, 1) + ---- DATA(1, 1) + --- DATA(-1, 0)
+ 735 196 1470 735
+
+ 181 53 181
+ + ---- DATA(1, -1) - --- DATA(0, -1) + ---- DATA(-1, -1)
+ 1470 196 1470
+
+ 181 113 289 191
+ + ---- DATA(-1, 1) + --- DATA(1, 2) - ---- DATA(2, 2) + ---- DATA(2, 0)
+ 1470 735 5880 5880
+
+ 71 113 41 71
+ + ---- DATA(2, 1) + --- DATA(-1, 2) - --- DATA(0, 2) + ---- DATA(2, -1)
+ 5880 735 196 5880
+
+ 289 71 71
+ - ---- DATA(-2, 2) + ---- DATA(-2, 1) + ---- DATA(-2, -1)
+ 5880 5880 5880
+
+ 191 289 113 41
+ + ---- DATA(-2, 0) - ---- DATA(2, -2) + --- DATA(-1, -2) - --- DATA(0, -2)
+ 5880 5880 735 196
+
+ 113 289 \ 2
+ + --- DATA(1, -2) - ---- DATA(-2, -2)| x + (- 1/70 DATA(1, 0)
+ 735 5880 /
+
+ - 1/140 DATA(1, 1) + 1/70 DATA(-1, 0) - 1/140 DATA(1, -1)
+
+ + 1/140 DATA(-1, -1) + 1/140 DATA(-1, 1) + 1/70 DATA(1, 2)
+
+ + 1/35 DATA(2, 2) - 1/35 DATA(2, 0) - 1/70 DATA(2, 1) - 1/70 DATA(-1, 2)
+
+ - 1/70 DATA(2, -1) - 1/35 DATA(-2, 2) + 1/70 DATA(-2, 1)
+
+ + 1/70 DATA(-2, -1) + 1/35 DATA(-2, 0) + 1/35 DATA(2, -2)
+
+ 2
+ - 1/70 DATA(-1, -2) + 1/70 DATA(1, -2) - 1/35 DATA(-2, -2)) x y + (
+
+ - 1/60 DATA(1, 1) + 1/60 DATA(1, -1) - 1/60 DATA(-1, -1) + 1/60 DATA(-1, 1)
+
+ + 1/120 DATA(1, 2) + 1/60 DATA(2, 2) - 1/30 DATA(2, 1) - 1/120 DATA(-1, 2)
+
+ + 1/30 DATA(2, -1) - 1/60 DATA(-2, 2) + 1/30 DATA(-2, 1)
+
+ - 1/30 DATA(-2, -1) - 1/60 DATA(2, -2) + 1/120 DATA(-1, -2)
+
+ 3 / 57
+ - 1/120 DATA(1, -2) + 1/60 DATA(-2, -2)) x y + |- --- DATA(0, 0)
+ \ 196
+
+ 53 83 181 53
+ - --- DATA(1, 0) + --- DATA(0, 1) + ---- DATA(1, 1) - --- DATA(-1, 0)
+ 196 735 1470 196
+
+ 181 83 181
+ + ---- DATA(1, -1) + --- DATA(0, -1) + ---- DATA(-1, -1)
+ 1470 735 1470
+
+ 181 71 289 41
+ + ---- DATA(-1, 1) + ---- DATA(1, 2) - ---- DATA(2, 2) - --- DATA(2, 0)
+ 1470 5880 5880 196
+
+ 113 71 191 113
+ + --- DATA(2, 1) + ---- DATA(-1, 2) + ---- DATA(0, 2) + --- DATA(2, -1)
+ 735 5880 5880 735
+
+ 289 113 113 41
+ - ---- DATA(-2, 2) + --- DATA(-2, 1) + --- DATA(-2, -1) - --- DATA(-2, 0)
+ 5880 735 735 196
+
+ 289 71 191
+ - ---- DATA(2, -2) + ---- DATA(-1, -2) + ---- DATA(0, -2)
+ 5880 5880 5880
+
+ 71 289 \ 2
+ + ---- DATA(1, -2) - ---- DATA(-2, -2)| y + (- 1/30 DATA(0, 1)
+ 5880 5880 /
+
+ - 1/30 DATA(1, 1) + 1/30 DATA(1, -1) + 1/30 DATA(0, -1)
+
+ + 1/30 DATA(-1, -1) - 1/30 DATA(-1, 1) + 1/60 DATA(1, 2) + 1/60 DATA(2, 2)
+
+ - 1/30 DATA(2, 1) + 1/60 DATA(-1, 2) + 1/60 DATA(0, 2) + 1/30 DATA(2, -1)
+
+ + 1/60 DATA(-2, 2) - 1/30 DATA(-2, 1) + 1/30 DATA(-2, -1)
+
+ - 1/60 DATA(2, -2) - 1/60 DATA(-1, -2) - 1/60 DATA(0, -2)
+
+ 3
+ - 1/60 DATA(1, -2) - 1/60 DATA(-2, -2)) y + (1/49 DATA(0, 0)
+
+ + 1/98 DATA(1, 0) + 1/98 DATA(0, 1) + 1/196 DATA(1, 1) + 1/98 DATA(-1, 0)
+
+ + 1/196 DATA(1, -1) + 1/98 DATA(0, -1) + 1/196 DATA(-1, -1)
+
+ + 1/196 DATA(-1, 1) - 1/98 DATA(1, 2) + 1/49 DATA(2, 2) - 1/49 DATA(2, 0)
+
+ - 1/98 DATA(2, 1) - 1/98 DATA(-1, 2) - 1/49 DATA(0, 2) - 1/98 DATA(2, -1)
+
+ + 1/49 DATA(-2, 2) - 1/98 DATA(-2, 1) - 1/98 DATA(-2, -1)
+
+ - 1/49 DATA(-2, 0) + 1/49 DATA(2, -2) - 1/98 DATA(-1, -2)
+
+ 2 2 /
+ - 1/49 DATA(0, -2) - 1/98 DATA(1, -2) + 1/49 DATA(-2, -2)) x y + |
+ \
+
+ 37 37 37 37
+ --- DATA(1, 1) - --- DATA(1, -1) + --- DATA(-1, -1) - --- DATA(-1, 1)
+ 300 300 300 300
+
+ 21 11 21 21
+ + --- DATA(1, 2) - --- DATA(2, 2) + --- DATA(2, 1) - --- DATA(-1, 2)
+ 200 150 200 200
+
+ 21 11 21 21
+ - --- DATA(2, -1) + --- DATA(-2, 2) - --- DATA(-2, 1) + --- DATA(-2, -1)
+ 200 150 200 200
+
+ 11 21 21 11 \
+ + --- DATA(2, -2) + --- DATA(-1, -2) - --- DATA(1, -2) - --- DATA(-2, -2)|
+ 150 200 200 150 /
+
+ x y + (- 1/70 DATA(0, 1) - 1/140 DATA(1, 1) + 1/140 DATA(1, -1)
+
+ + 1/70 DATA(0, -1) + 1/140 DATA(-1, -1) - 1/140 DATA(-1, 1)
+
+ - 1/70 DATA(1, 2) + 1/35 DATA(2, 2) + 1/70 DATA(2, 1) - 1/70 DATA(-1, 2)
+
+ - 1/35 DATA(0, 2) - 1/70 DATA(2, -1) + 1/35 DATA(-2, 2) + 1/70 DATA(-2, 1)
+
+ - 1/70 DATA(-2, -1) - 1/35 DATA(2, -2) + 1/70 DATA(-1, -2)
+
+ 2
+ + 1/35 DATA(0, -2) + 1/70 DATA(1, -2) - 1/35 DATA(-2, -2)) x y + (
+
+ - 1/60 DATA(1, 1) + 1/60 DATA(1, -1) - 1/60 DATA(-1, -1) + 1/60 DATA(-1, 1)
+
+ - 1/30 DATA(1, 2) + 1/60 DATA(2, 2) + 1/120 DATA(2, 1) + 1/30 DATA(-1, 2)
+
+ - 1/120 DATA(2, -1) - 1/60 DATA(-2, 2) - 1/120 DATA(-2, 1)
+
+ + 1/120 DATA(-2, -1) - 1/60 DATA(2, -2) - 1/30 DATA(-1, -2)
+
+ 3 99
+ + 1/30 DATA(1, -2) + 1/60 DATA(-2, -2)) x y - ---- DATA(1, 2)
+ 1225
+
+ 51 96 99 99
+ + ---- DATA(2, 2) + ---- DATA(2, 0) - ---- DATA(2, 1) - ---- DATA(-1, 2)
+ 1225 1225 1225 1225
+
+ 96 99 51 99
+ + ---- DATA(0, 2) - ---- DATA(2, -1) + ---- DATA(-2, 2) - ---- DATA(-2, 1)
+ 1225 1225 1225 1225
+
+ 99 96 51
+ - ---- DATA(-2, -1) + ---- DATA(-2, 0) + ---- DATA(2, -2)
+ 1225 1225 1225
+
+ 99 96 99
+ - ---- DATA(-1, -2) + ---- DATA(0, -2) - ---- DATA(1, -2)
+ 1225 1225 1225
+
+ 51
+ + ---- DATA(-2, -2)
+ 1225
+
+>
+# I
+> coeff_as_lc_of_data(%, posn_list_2d_size5);
+bytes used=44033940, alloc=2162292, time=3.85
+bytes used=45039820, alloc=2162292, time=3.91
+ 51 3 4 3 2 2
+[COEFF(-2, -2) = ---- + 1/60 x y + 1/120 x - 1/60 y - 1/35 x y - 1/35 x y
+ 1225
+
+ 4 289 2 2 2 31 3 31 11
+ + 1/120 y - ---- x + 1/49 x y + --- y - 1/60 x + --- x - --- x y
+ 5880 420 420 150
+
+ 3 289 2 21 2 4
+ + 1/60 x y - ---- y , COEFF(-1, -2) = --- x y - 1/70 x y + 1/120 y
+ 5880 200
+
+ 3 3 99 113 2 71 2 11 3
+ + 1/120 x y + 1/30 x - ---- + --- x + ---- y - --- x - 1/60 y
+ 1225 735 5880 105
+
+ 4 3 2 2 2
+ - 1/30 x - 1/30 x y - 1/84 y - 1/98 x y + 1/70 x y, COEFF(0, -2) =
+
+ 2 2 2 4 41 2 17 96 4
+ 1/35 x y - 1/49 x y + 1/20 x - --- x - --- y + ---- + 1/120 y
+ 196 420 1225
+
+ 3 191 2 2 2 99
+ - 1/60 y + ---- y , COEFF(1, -2) = - 1/98 x y - ---- - 1/84 y
+ 5880 1225
+
+ 2 113 2 3 4 3 2
+ + 1/70 x y + --- x - 1/120 x y + 1/120 y + 1/30 x y + 1/70 x y
+ 735
+
+ 21 4 3 71 2 11 3
+ - --- x y - 1/30 x - 1/30 x + ---- y + --- x - 1/60 y , COEFF(2, -2) =
+ 200 5880 105
+
+ 2 2 4 3 4 31 31 3
+ 1/49 x y + 1/120 y - 1/60 x y + 1/120 x + --- y - --- x + 1/60 x
+ 420 420
+
+ 2 51 3 3 11 289 2 2
+ - 1/35 x y + ---- - 1/60 x y - 1/60 y + --- x y - ---- y + 1/35 x y
+ 1225 150 5880
+
+ 289 2 2 2 2 4
+ - ---- x , COEFF(-2, -1) = - 1/98 x y + 1/70 x y + 1/120 x
+ 5880
+
+ 3 11 21 71 2 2 3
+ + 1/120 x y - --- y + --- x y + ---- x - 1/70 x y + 1/30 y - 1/84 x
+ 105 200 5880
+
+ 3 3 113 2 4 99 24
+ - 1/60 x - 1/30 x y + --- y - 1/30 y - ----, COEFF(-1, -1) = - ----
+ 735 1225 1225
+
+ 31 4 181 2 2 31 3 3
+ - --- x - 1/30 y + ---- x + 1/140 x y - --- y - 1/60 x y + 1/30 y
+ 210 1470 210
+
+ 4 3 3 181 2 37 2 2
+ - 1/30 x + 1/30 x - 1/60 x y + ---- y + --- x y + 1/196 x y
+ 1470 300
+
+ 2 246 83 2 3 53 2 17
+ + 1/140 x y , COEFF(0, -1) = ---- + --- y + 1/30 y - --- x - --- y
+ 1225 735 196 105
+
+ 2 4 2 2 4 181 2
+ + 1/70 x y + 1/20 x + 1/98 x y - 1/30 y , COEFF(1, -1) = ---- y
+ 1470
+
+ 4 4 3 3 24 181 2 2
+ - 1/30 x - 1/30 y - 1/30 x + 1/60 x y - ---- + ---- x + 1/140 x y
+ 1225 1470
+
+ 37 31 2 3 3 2 2 31
+ - --- x y - --- y - 1/140 x y + 1/30 y + 1/60 x y + 1/196 x y + --- x
+ 300 210 210
+
+ 3 21 4 2 2 2
+ , COEFF(2, -1) = 1/30 x y - --- x y - 1/30 y - 1/70 x y - 1/98 x y
+ 200
+
+ 99 11 71 2 113 2 3 2
+ - ---- + 1/84 x - --- y + ---- x + --- y + 1/30 y - 1/70 x y
+ 1225 105 5880 735
+
+ 4 3 3 4 3
+ + 1/120 x - 1/120 x y + 1/60 x , COEFF(-2, 0) = 1/120 x - 1/60 x
+
+ 191 2 17 2 2 4 2 41 2 96
+ + ---- x - --- x - 1/49 x y + 1/20 y + 1/35 x y - --- y + ----,
+ 5880 420 196 1225
+
+ 4 17 83 2 246 53 2 4
+ COEFF(-1, 0) = 1/20 y - --- x + --- x + ---- - --- y - 1/30 x
+ 105 735 1225 196
+
+ 2 3 2 2
+ + 1/70 x y + 1/30 x + 1/98 x y ,
+
+ 57 2 4 4 57 2 2 2 541
+ COEFF(0, 0) = - --- x + 1/20 y + 1/20 x - --- y + 1/49 x y + ----,
+ 196 196 1225
+
+ 246 17 2 53 2 4 4
+ COEFF(1, 0) = ---- + --- x - 1/70 x y - --- y - 1/30 x + 1/20 y
+ 1225 105 196
+
+ 3 83 2 2 2 2 4
+ - 1/30 x + --- x + 1/98 x y , COEFF(2, 0) = - 1/35 x y + 1/20 y
+ 735
+
+ 4 96 3 17 2 2 41 2 191 2
+ + 1/120 x + ---- + 1/60 x + --- x - 1/49 x y - --- y + ---- x ,
+ 1225 420 196 5880
+
+ 2 2 3 99 3 2 11
+ COEFF(-2, 1) = - 1/98 x y - 1/60 x - ---- - 1/30 y + 1/70 x y + --- y
+ 1225 105
+
+ 2 4 113 2 3 4 3
+ + 1/70 x y - 1/30 y + --- y + 1/30 x y + 1/120 x - 1/120 x y
+ 735
+
+ 21 71 2 2 2 3
+ - 1/84 x - --- x y + ---- x , COEFF(-1, 1) = 1/196 x y + 1/30 x
+ 200 5880
+
+ 3 2 4 3 37 31 31
+ + 1/60 x y - 1/140 x y - 1/30 x + 1/60 x y - --- x y - --- x + --- y
+ 300 210 210
+
+ 181 2 2 3 24 181 2 4
+ + ---- y + 1/140 x y - 1/30 y - ---- + ---- x - 1/30 y , COEFF(0, 1)
+ 1470 1225 1470
+
+ 3 2 2 53 2 246 4 17 2
+ = - 1/30 y + 1/98 x y - --- x + ---- - 1/30 y + --- y - 1/70 x y
+ 196 1225 105
+
+ 4 83 2 3 24 3
+ + 1/20 x + --- y , COEFF(1, 1) = - 1/30 y - ---- - 1/60 x y
+ 735 1225
+
+ 2 2 37 3 181 2 31 4 31
+ + 1/196 x y + --- x y - 1/60 x y + ---- x + --- y - 1/30 y + --- x
+ 300 1470 210 210
+
+ 4 2 3 181 2 2
+ - 1/30 x - 1/140 x y - 1/30 x + ---- y - 1/140 x y, COEFF(2, 1) =
+ 1470
+
+ 3 113 2 3 2 2 21
+ - 1/30 x y + 1/84 x + --- y + 1/120 x y - 1/98 x y + --- x y
+ 735 200
+
+ 2 99 4 71 2 3 11 4
+ - 1/70 x y - ---- - 1/30 y + ---- x + 1/60 x + --- y + 1/120 x
+ 1225 5880 105
+
+ 3 2 2 3 11
+ - 1/30 y + 1/70 x y, COEFF(-2, 2) = 1/35 x y - 1/60 x y + --- x y
+ 150
+
+ 2 31 289 2 4 2 2 289 2 31
+ - 1/35 x y - --- y - ---- y + 1/120 y + 1/49 x y - ---- x + --- x
+ 420 5880 5880 420
+
+ 3 4 3 51 3 99
+ - 1/60 x y + 1/120 x + 1/60 y + ---- - 1/60 x , COEFF(-1, 2) = - ----
+ 1225 1225
+
+ 3 21 71 2 2 2 2
+ - 1/120 x y - --- x y + 1/84 y + ---- y - 1/98 x y - 1/70 x y
+ 200 5880
+
+ 113 2 4 3 4 3 11 3
+ + --- x - 1/30 x + 1/30 x y + 1/120 y + 1/30 x - --- x + 1/60 y
+ 735 105
+
+ 2 4 2 17 41 2 191 2
+ - 1/70 x y, COEFF(0, 2) = 1/20 x - 1/35 x y + --- y - --- x + ---- y
+ 420 196 5880
+
+ 96 4 2 2 3 99
+ + ---- + 1/120 y - 1/49 x y + 1/60 y , COEFF(1, 2) = - ----
+ 1225 1225
+
+ 2 2 2 3 71 2 3
+ - 1/98 x y - 1/70 x y - 1/30 x y + 1/84 y + ---- y + 1/120 x y
+ 5880
+
+ 3 4 4 11 113 2 2 21
+ - 1/30 x - 1/30 x + 1/120 y + --- x + --- x + 1/70 x y + --- x y
+ 105 735 200
+
+ 3 2 4 2 2 289 2
+ + 1/60 y , COEFF(2, 2) = 1/35 x y + 1/120 x + 1/49 x y - ---- y
+ 5880
+
+ 3 3 31 4 289 2 3 2
+ + 1/60 x y + 1/60 x y - --- y + 1/120 y - ---- x + 1/60 x + 1/35 x y
+ 420 5880
+
+ 11 31 51 3
+ - --- x y - --- x + ---- + 1/60 y ]
+ 150 420 1225
+
+> print_coeff__lc_of_data(%, "coeff_I_", "fp",
+> "2d.coeffs/2d.cube.order4.smooth0/coeff-I.compute.c");
+bytes used=46039980, alloc=2162292, time=4.00
+bytes used=47040144, alloc=2162292, time=4.08
+bytes used=48048756, alloc=2162292, time=4.16
+bytes used=49050036, alloc=2227816, time=4.23
+bytes used=50050424, alloc=2227816, time=4.33
+bytes used=51050604, alloc=2227816, time=4.48
+bytes used=52050764, alloc=2227816, time=4.55
+bytes used=53052936, alloc=2227816, time=4.64
+bytes used=54053412, alloc=2227816, time=4.74
+bytes used=55053604, alloc=2227816, time=4.89
+bytes used=56053828, alloc=2227816, time=4.95
+bytes used=57054040, alloc=2293340, time=5.07
+bytes used=58054312, alloc=2293340, time=5.26
+bytes used=59054740, alloc=2293340, time=5.33
+bytes used=60054904, alloc=2293340, time=5.43
+bytes used=61055148, alloc=2293340, time=5.58
+bytes used=62055404, alloc=2293340, time=5.65
+bytes used=63058408, alloc=2293340, time=5.83
+bytes used=64058672, alloc=2293340, time=5.89
+bytes used=65058956, alloc=2293340, time=6.08
+bytes used=66059172, alloc=2293340, time=6.16
+>
+# d/dx
+> simplify( diff(interp_2d_cube_order4_smooth0,x) );
+bytes used=67059496, alloc=2293340, time=6.26
+bytes used=68059676, alloc=2293340, time=6.33
+bytes used=69060256, alloc=2358864, time=6.40
+17 31 17 31
+--- DATA(1, 0) + --- DATA(1, 1) - --- DATA(-1, 0) + --- DATA(1, -1)
+105 210 105 210
+
+ 31 31 11 31
+ - --- DATA(-1, -1) - --- DATA(-1, 1) + --- DATA(1, 2) - --- DATA(2, 2)
+ 210 210 105 420
+
+ 17 11
+ + --- DATA(2, 0) + 1/84 DATA(2, 1) - --- DATA(-1, 2) + 1/84 DATA(2, -1)
+ 420 105
+
+ 31 2
+ + --- DATA(-2, 2) - 1/84 DATA(-2, 1) - 1/70 y DATA(2, 1)
+ 420
+
+ 2 2 2
+ - 1/70 y DATA(-1, 2) - 1/70 y DATA(2, -1) - 1/35 y DATA(-2, 2)
+
+ 2 2 2
+ + 1/70 y DATA(-2, 1) + 1/70 y DATA(-2, -1) + 1/35 y DATA(-2, 0)
+
+ 2 2 2
+ + 1/35 y DATA(2, -2) - 1/70 y DATA(-1, -2) + 1/35 y DATA(2, 2)
+
+ 2 2 2
+ - 1/70 y DATA(1, 0) - 1/140 y DATA(1, 1) + 1/70 y DATA(-1, 0)
+
+ 2 2 2
+ - 1/140 y DATA(1, -1) + 1/140 y DATA(-1, -1) + 1/140 y DATA(-1, 1)
+
+ - 1/35 x y DATA(-1, 2) - 2/35 x y DATA(0, 2) - 1/35 x y DATA(0, 1)
+
+ 2 2
+ - 1/20 x y DATA(-1, -1) - 1/20 x y DATA(1, 1) - 1/35 x y DATA(-2, -1)
+
+ - 2/35 x y DATA(2, -2) + 2/35 x y DATA(2, 2) + 1/35 x y DATA(2, 1)
+
+ 37 2 2
+ + --- y DATA(1, 1) - 1/49 x y DATA(-2, -1) + 2/49 x y DATA(2, -2)
+ 300
+
+ 2 2
+ - 1/49 x y DATA(-1, -2) - 1/49 x y DATA(1, -2) - 1/35 x y DATA(2, -1)
+
+ 21
+ + 2/35 x y DATA(-2, 2) + 1/35 x y DATA(-2, 1) - --- y DATA(-1, 2)
+ 200
+
+ 21 11 21
+ - --- y DATA(2, -1) + --- y DATA(-2, 2) - --- y DATA(-2, 1)
+ 200 150 200
+
+ 21 11 21
+ + --- y DATA(-2, -1) + --- y DATA(2, -2) + --- y DATA(-1, -2)
+ 200 150 200
+
+ 21 11 37
+ - --- y DATA(1, -2) - --- y DATA(-2, -2) - --- y DATA(1, -1)
+ 200 150 300
+
+ 2 2 2
+ + 1/70 y DATA(1, -2) - 1/35 y DATA(-2, -2) + 1/70 y DATA(1, 2)
+
+ 2 2
+ - 1/35 y DATA(2, 0) + 1/35 x y DATA(-1, -2) - 2/49 x y DATA(0, 2)
+
+ 2 2 2
+ - 2/49 x y DATA(0, -2) + 1/49 x y DATA(-1, 0) - 2/49 x y DATA(2, 0)
+
+ 2
+ - 2/49 x y DATA(-2, 0) + 2/35 x y DATA(0, -2) + 1/35 x y DATA(1, -2)
+
+ 2 2
+ - 2/35 x y DATA(-2, -2) - 1/49 x y DATA(2, 1) - 1/49 x y DATA(2, -1)
+
+ 2 2 37
+ + 2/49 x y DATA(-2, 2) - 1/49 x y DATA(-2, 1) + --- y DATA(-1, -1)
+ 300
+
+ 3 3 3
+ + 1/30 y DATA(-2, 1) + 1/60 y DATA(-1, 1) - 1/60 y DATA(1, 1)
+
+ 3 37 21
+ + 1/60 y DATA(1, -1) - --- y DATA(-1, 1) + --- y DATA(1, 2)
+ 300 200
+
+ 11 21 3
+ - --- y DATA(2, 2) + --- y DATA(2, 1) + 1/60 y DATA(-2, -2)
+ 150 200
+
+ 71 289 71
+ + ---- x DATA(2, -1) - ---- x DATA(-2, 2) + ---- x DATA(-2, 1)
+ 2940 2940 2940
+
+ 71 289 226
+ + ---- x DATA(-2, -1) - ---- x DATA(2, -2) + --- x DATA(-1, -2)
+ 2940 2940 735
+
+ 226 289 53
+ + --- x DATA(1, -2) - ---- x DATA(-2, -2) - -- x DATA(0, 1)
+ 735 2940 98
+
+ 53 41 41
+ - -- x DATA(0, -1) - -- x DATA(0, 2) - -- x DATA(0, -2)
+ 98 98 98
+
+ 166 3 3
+ + --- x DATA(-1, 0) - 1/60 y DATA(2, -2) - 1/60 y DATA(-1, -1)
+ 735
+
+ 3 3 3
+ + 1/120 y DATA(1, 2) + 1/60 y DATA(2, 2) - 1/30 y DATA(2, 1)
+
+ 3 3 3
+ - 1/120 y DATA(-1, 2) + 1/30 y DATA(2, -1) - 1/60 y DATA(-2, 2)
+
+ 71 191 3
+ + ---- x DATA(2, 1) + ---- x DATA(-2, 0) - 1/30 y DATA(-2, -1)
+ 2940 2940
+
+ 3 3 191
+ + 1/120 y DATA(-1, -2) - 1/120 y DATA(1, -2) + ---- x DATA(2, 0)
+ 2940
+
+ 17 3
+ - 1/84 DATA(-2, -1) - --- DATA(-2, 0) - 2/15 x DATA(1, -2)
+ 420
+
+ 3 3 3
+ + 1/30 x DATA(-2, -2) + 1/5 x DATA(0, 1) + 1/5 x DATA(0, -1)
+
+ 3 3 3
+ + 1/5 x DATA(0, 2) + 1/5 x DATA(0, -2) - 2/15 x DATA(-1, 0)
+
+ 3 3 57
+ + 1/30 x DATA(2, 0) + 1/30 x DATA(-2, 0) - -- x DATA(0, 0)
+ 98
+
+ 226 181 181
+ + --- x DATA(-1, 2) + --- x DATA(1, 1) + --- x DATA(1, -1)
+ 735 735 735
+
+ 181 181 226
+ + --- x DATA(-1, -1) + --- x DATA(-1, 1) + --- x DATA(1, 2)
+ 735 735 735
+
+ 289 166 3
+ - ---- x DATA(2, 2) + --- x DATA(1, 0) - 2/15 x DATA(-1, 2)
+ 2940 735
+
+ 3 3 3
+ - 2/15 x DATA(1, 1) - 2/15 x DATA(1, -1) - 2/15 x DATA(-1, -1)
+
+ 3 3 3
+ - 2/15 x DATA(-1, 1) + 1/30 x DATA(2, 1) + 1/30 x DATA(2, -1)
+
+ 3 3 3
+ + 1/30 x DATA(-2, 2) + 1/30 x DATA(-2, 1) + 1/30 x DATA(-2, -1)
+
+ 3 3 2
+ + 1/30 x DATA(2, -2) - 2/15 x DATA(-1, -2) - 1/20 x DATA(-2, -2)
+
+ 3 3 3
+ - 2/15 x DATA(1, 2) + 1/30 x DATA(2, 2) - 2/15 x DATA(1, 0)
+
+ 2 2 2
+ - 1/10 x DATA(1, 0) - 1/10 x DATA(1, 1) + 1/10 x DATA(-1, 0)
+
+ 2 2 2
+ - 1/10 x DATA(1, -1) + 1/10 x DATA(-1, -1) + 1/10 x DATA(-1, 1)
+
+ 3 2 2
+ + 1/5 x DATA(0, 0) - 1/10 x y DATA(-1, -2) + 1/20 x y DATA(1, -1)
+
+ 2 2 2
+ + 1/40 x y DATA(-2, -1) - 1/49 x y DATA(1, 2) + 2/49 x y DATA(2, 2)
+
+ 2 2 2
+ + 1/49 x y DATA(1, 0) + 2/49 x y DATA(0, 0) - 1/49 x y DATA(-1, 2)
+
+ 2 2 2
+ + 1/98 x y DATA(1, 1) + 1/98 x y DATA(1, -1) + 1/98 x y DATA(-1, -1)
+
+ 2 2 2
+ + 1/98 x y DATA(-1, 1) + 2/49 x y DATA(-2, -2) + 1/49 x y DATA(0, 1)
+
+ 2
+ + 1/49 x y DATA(0, -1) - 1/35 x y DATA(1, 2) + 1/70 x y DATA(1, -1)
+
+ 2 2
+ + 1/35 x y DATA(0, -1) + 1/10 x y DATA(1, -2) + 1/10 x y DATA(-1, 2)
+
+ 2 31
+ - 1/40 x y DATA(-2, 1) - 1/70 x y DATA(1, 1) - --- DATA(2, -2)
+ 420
+
+ 11 11 2
+ - --- DATA(-1, -2) + --- DATA(1, -2) - 1/40 x y DATA(2, -1)
+ 105 105
+
+ 2 2 2
+ + 1/20 x y DATA(-2, -2) - 1/10 x y DATA(1, 2) + 1/40 x y DATA(2, 1)
+
+ 2 2 2
+ + 1/20 x y DATA(2, 2) - 1/20 x y DATA(2, -2) - 1/20 x y DATA(-2, 2)
+
+ 2
+ + 1/20 x y DATA(-1, 1) + 1/70 x y DATA(-1, -1) - 1/70 x y DATA(-1, 1)
+
+ 2 2 2
+ - 1/10 x DATA(1, 2) + 1/20 x DATA(2, 0) + 1/20 x DATA(2, 1)
+
+ 2 2 2
+ + 1/10 x DATA(-1, 2) + 1/20 x DATA(2, -1) + 1/20 x DATA(2, 2)
+
+ 2 2 2
+ - 1/20 x DATA(-2, 2) - 1/20 x DATA(-2, 1) - 1/20 x DATA(-2, -1)
+
+ 2 2 2
+ - 1/20 x DATA(-2, 0) + 1/20 x DATA(2, -2) + 1/10 x DATA(-1, -2)
+
+ 2 31
+ - 1/10 x DATA(1, -2) + --- DATA(-2, -2)
+ 420
+
+> coeff_as_lc_of_data(%, posn_list_2d_size5);
+bytes used=70063472, alloc=2424388, time=6.47
+ 31 3 2 11 3
+[COEFF(-2, -2) = --- + 1/60 y - 2/35 x y + 2/49 x y - --- y + 1/30 x
+ 420 150
+
+ 2 2 2 289 2
+ - 1/20 x + 1/20 x y - 1/35 y - ---- x, COEFF(-1, -2) = - 1/10 x y
+ 2940
+
+ 2 2 3 2 226 11
+ - 1/70 y - 1/49 x y + 1/120 y + 1/10 x + --- x - --- + 1/35 x y
+ 735 105
+
+ 21 3 2 41 3
+ + --- y - 2/15 x , COEFF(0, -2) = - 2/49 x y - -- x + 1/5 x + 2/35 x y,
+ 200 98
+
+ 3 2 3 2
+ COEFF(1, -2) = - 2/15 x - 1/49 x y - 1/120 y - 1/10 x + 1/35 x y
+
+ 21 226 11 2 2 11
+ - --- y + --- x + --- + 1/10 x y + 1/70 y , COEFF(2, -2) = --- y
+ 200 735 105 150
+
+ 2 2 2 31 289 3 3
+ + 2/49 x y + 1/20 x + 1/35 y - --- - ---- x - 1/60 y + 1/30 x
+ 420 2940
+
+ 2 3 21 3
+ - 2/35 x y - 1/20 x y, COEFF(-2, -1) = 1/30 x + --- y - 1/30 y
+ 200
+
+ 2 2 2 71 2
+ - 1/49 x y - 1/35 x y + 1/40 x y + 1/70 y + ---- x - 1/20 x - 1/84,
+ 2940
+
+ 3 31 2 3 2
+ COEFF(-1, -1) = - 2/15 x - --- + 1/140 y + 1/70 x y - 1/60 y - 1/20 x y
+ 210
+
+ 37 2 2 181
+ + --- y + 1/10 x + 1/98 x y + --- x,
+ 300 735
+
+ 3 2 53 3
+ COEFF(0, -1) = 1/35 x y + 1/5 x + 1/49 x y - -- x, COEFF(1, -1) = 1/60 y
+ 98
+
+ 3 2 2 31 2 181
+ - 2/15 x + 1/20 x y - 1/10 x + --- + 1/98 x y + --- x + 1/70 x y
+ 210 735
+
+ 2 37 2 2
+ - 1/140 y - --- y, COEFF(2, -1) = - 1/70 y - 1/49 x y - 1/35 x y
+ 300
+
+ 21 2 3 3 2 71
+ - --- y - 1/40 x y + 1/30 x + 1/30 y + 1/84 + 1/20 x + ---- x,
+ 200 2940
+
+ 2 2 191 3 2 17
+ COEFF(-2, 0) = - 2/49 x y + 1/35 y + ---- x + 1/30 x - 1/20 x - ---,
+ 2940 420
+
+ 2 17 166 2 2 3
+ COEFF(-1, 0) = 1/49 x y - --- + --- x + 1/10 x + 1/70 y - 2/15 x ,
+ 105 735
+
+ 57 3 2
+ COEFF(0, 0) = - -- x + 1/5 x + 2/49 x y ,
+ 98
+
+ 2 2 17 2 3 166
+ COEFF(1, 0) = 1/49 x y - 1/70 y + --- - 1/10 x - 2/15 x + --- x,
+ 105 735
+
+ 2 2 17 2 3 191
+ COEFF(2, 0) = - 1/35 y - 2/49 x y + --- + 1/20 x + 1/30 x + ---- x,
+ 420 2940
+
+ 3 3 2 2 71
+ COEFF(-2, 1) = 1/30 y + 1/30 x - 1/49 x y + 1/35 x y + 1/70 y + ---- x
+ 2940
+
+ 2 2 21 2
+ - 1/20 x - 1/40 x y - --- y - 1/84, COEFF(-1, 1) = 1/20 x y - 1/70 x y
+ 200
+
+ 2 2 2 181 3 3 31 37
+ + 1/10 x + 1/98 x y + 1/140 y + --- x - 2/15 x + 1/60 y - --- - --- y
+ 735 210 300
+
+ 53 2 3 181
+ , COEFF(0, 1) = - -- x + 1/49 x y + 1/5 x - 1/35 x y, COEFF(1, 1) = --- x
+ 98 735
+
+ 2 3 3 31 37 2
+ - 1/10 x - 1/60 y - 2/15 x + --- + --- y - 1/140 y - 1/70 x y
+ 210 300
+
+ 2 2 21 3
+ + 1/98 x y - 1/20 x y, COEFF(2, 1) = --- y - 1/30 y + 1/35 x y
+ 200
+
+ 2 71 2 3 2 2
+ + 1/20 x + ---- x - 1/70 y + 1/30 x + 1/84 + 1/40 x y - 1/49 x y ,
+ 2940
+
+ 2 2 2 11 2
+ COEFF(-2, 2) = - 1/20 x - 1/20 x y - 1/35 y + --- y + 2/49 x y
+ 150
+
+ 3 3 289 31 3
+ - 1/60 y + 1/30 x + 2/35 x y - ---- x + ---, COEFF(-1, 2) = - 2/15 x
+ 2940 420
+
+ 2 3 2 21 2 226
+ - 1/35 x y + 1/10 x - 1/120 y + 1/10 x y - --- y - 1/49 x y + --- x
+ 200 735
+
+ 2 11 2 41 3
+ - 1/70 y - ---, COEFF(0, 2) = - 2/35 x y - 2/49 x y - -- x + 1/5 x ,
+ 105 98
+
+ 11 2 2 3 2
+ COEFF(1, 2) = --- - 1/10 x - 1/49 x y - 2/15 x - 1/35 x y + 1/70 y
+ 105
+
+ 21 2 3 226 2 2
+ + --- y - 1/10 x y + 1/120 y + --- x, COEFF(2, 2) = 1/20 x y + 1/35 y
+ 200 735
+
+ 31 2 11 3 289 2
+ + 2/35 x y - --- + 1/20 x - --- y + 1/30 x - ---- x + 2/49 x y
+ 420 150 2940
+
+ 3
+ + 1/60 y ]
+
+> print_coeff__lc_of_data(%, "coeff_dx_", "fp",
+> "2d.coeffs/2d.cube.order4.smooth0/coeff-dx.compute.c");
+bytes used=71064040, alloc=2424388, time=6.54
+bytes used=72064272, alloc=2424388, time=6.62
+bytes used=73075772, alloc=2424388, time=6.70
+bytes used=74075968, alloc=2424388, time=6.88
+bytes used=75076136, alloc=2424388, time=6.95
+bytes used=76076304, alloc=2424388, time=7.04
+bytes used=77076556, alloc=2424388, time=7.20
+bytes used=78076920, alloc=2424388, time=7.29
+bytes used=79077292, alloc=2424388, time=7.46
+bytes used=80077492, alloc=2424388, time=7.59
+bytes used=81077684, alloc=2424388, time=7.72
+>
+# d/dy
+> simplify( diff(interp_2d_cube_order4_smooth0,y) );
+bytes used=82108412, alloc=2424388, time=7.80
+bytes used=83108600, alloc=2424388, time=7.88
+ 17 31 2
+- 2/35 x y DATA(2, 0) + --- DATA(0, 1) + --- DATA(1, 1) + 1/35 x DATA(0, -2)
+ 105 210
+
+ 53 166 166 57
+ - -- y DATA(1, 0) + --- y DATA(0, 1) + --- y DATA(0, -1) - -- y DATA(0, 0)
+ 98 735 735 98
+
+ 191 2 2
+ + ---- y DATA(0, -2) + 1/20 y DATA(0, 2) - 1/20 y DATA(0, -2)
+ 2940
+
+ 3 3 3
+ + 1/5 y DATA(-1, 0) + 1/5 y DATA(2, 0) + 1/5 y DATA(-2, 0)
+
+ 53 41 41
+ - -- y DATA(-1, 0) - -- y DATA(2, 0) - -- y DATA(-2, 0)
+ 98 98 98
+
+ 191 2 2
+ + ---- y DATA(0, 2) - 1/10 y DATA(0, 1) + 1/10 y DATA(0, -1)
+ 2940
+
+ 2 2 2
+ - 2/49 x y DATA(0, -2) + 1/70 x DATA(0, -1) - 1/35 x DATA(0, 2)
+
+ 3 3 3
+ + 1/30 y DATA(0, 2) + 1/30 y DATA(0, -2) - 2/15 y DATA(0, -1)
+
+ 3 3 3
+ + 1/5 y DATA(0, 0) + 1/5 y DATA(1, 0) - 2/15 y DATA(0, 1)
+
+ 31 17 31 31
+ - --- DATA(1, -1) - --- DATA(0, -1) - --- DATA(-1, -1) + --- DATA(-1, 1)
+ 210 105 210 210
+
+ 31 11
+ + 1/84 DATA(1, 2) - --- DATA(2, 2) + --- DATA(2, 1) + 1/84 DATA(-1, 2)
+ 420 105
+
+ 17 11 31 11
+ + --- DATA(0, 2) - --- DATA(2, -1) - --- DATA(-2, 2) + --- DATA(-2, 1)
+ 420 105 420 105
+
+ 2 2 2
+ - 1/10 y DATA(2, 1) + 1/20 y DATA(-1, 2) + 1/10 y DATA(2, -1)
+
+ 2 2 2
+ + 1/20 y DATA(-2, 2) - 1/10 y DATA(-2, 1) + 1/10 y DATA(-2, -1)
+
+ 2 2 2
+ - 1/20 y DATA(2, -2) - 1/20 y DATA(-1, -2) + 1/20 y DATA(2, 2)
+
+ 2 2 2
+ - 1/10 y DATA(1, 1) + 1/10 y DATA(1, -1) + 1/10 y DATA(-1, -1)
+
+ 2 2
+ - 1/10 y DATA(-1, 1) - 1/35 x y DATA(-1, 2) + 1/98 x y DATA(-1, -1)
+
+ 2
+ + 1/98 x y DATA(1, 1) + 1/35 x y DATA(-2, -1) + 2/35 x y DATA(2, -2)
+
+ 181
+ + 2/35 x y DATA(2, 2) - 1/35 x y DATA(2, 1) + --- y DATA(1, 1)
+ 735
+
+ 2 2 2
+ - 1/10 x y DATA(-2, -1) - 1/20 x y DATA(2, -2) + 1/40 x y DATA(-1, -2)
+
+ 2
+ - 1/40 x y DATA(1, -2) - 1/35 x y DATA(2, -1) - 2/35 x y DATA(-2, 2)
+
+ 71 226
+ + 1/35 x y DATA(-2, 1) + ---- y DATA(-1, 2) + --- y DATA(2, -1)
+ 2940 735
+
+ 289 226 226
+ - ---- y DATA(-2, 2) + --- y DATA(-2, 1) + --- y DATA(-2, -1)
+ 2940 735 735
+
+ 289 71 71
+ - ---- y DATA(2, -2) + ---- y DATA(-1, -2) + ---- y DATA(1, -2)
+ 2940 2940 2940
+
+ 289 181 2
+ - ---- y DATA(-2, -2) + --- y DATA(1, -1) - 1/20 y DATA(1, -2)
+ 2940 735
+
+ 2 2
+ - 1/20 y DATA(-2, -2) + 1/20 y DATA(1, 2) - 1/35 x y DATA(-1, -2)
+
+ 2
+ + 1/35 x y DATA(1, -2) - 2/35 x y DATA(-2, -2) - 1/10 x y DATA(2, 1)
+
+ 2 2 2
+ + 1/10 x y DATA(2, -1) - 1/20 x y DATA(-2, 2) + 1/10 x y DATA(-2, 1)
+
+ 181 3 3
+ + --- y DATA(-1, -1) - 2/15 y DATA(-2, 1) - 2/15 y DATA(-1, 1)
+ 735
+
+ 3 3 181
+ - 2/15 y DATA(1, 1) - 2/15 y DATA(1, -1) + --- y DATA(-1, 1)
+ 735
+
+ 71 289 226
+ + ---- y DATA(1, 2) - ---- y DATA(2, 2) + --- y DATA(2, 1)
+ 2940 2940 735
+
+ 3 21 11
+ + 1/30 y DATA(-2, -2) - --- x DATA(2, -1) + --- x DATA(-2, 2)
+ 200 150
+
+ 21 21 11
+ - --- x DATA(-2, 1) + --- x DATA(-2, -1) + --- x DATA(2, -2)
+ 200 200 150
+
+ 21 21 11
+ + --- x DATA(-1, -2) - --- x DATA(1, -2) - --- x DATA(-2, -2)
+ 200 200 150
+
+ 3 3 3
+ + 1/30 y DATA(2, -2) - 2/15 y DATA(-1, -1) + 1/30 y DATA(1, 2)
+
+ 3 3 3
+ + 1/30 y DATA(2, 2) - 2/15 y DATA(2, 1) + 1/30 y DATA(-1, 2)
+
+ 3 3 21
+ - 2/15 y DATA(2, -1) + 1/30 y DATA(-2, 2) + --- x DATA(2, 1)
+ 200
+
+ 3 3 3
+ - 2/15 y DATA(-2, -1) + 1/30 y DATA(-1, -2) + 1/30 y DATA(1, -2)
+
+ 11 3 3
+ - --- DATA(-2, -1) + 1/30 x DATA(1, -2) + 1/60 x DATA(-2, -2)
+ 105
+
+ 21 37 37
+ - --- x DATA(-1, 2) + --- x DATA(1, 1) - --- x DATA(1, -1)
+ 200 300 300
+
+ 37 37 21
+ + --- x DATA(-1, -1) - --- x DATA(-1, 1) + --- x DATA(1, 2)
+ 300 300 200
+
+ 11 3 3
+ - --- x DATA(2, 2) + 1/30 x DATA(-1, 2) - 1/60 x DATA(1, 1)
+ 150
+
+ 3 3 3
+ + 1/60 x DATA(1, -1) - 1/60 x DATA(-1, -1) + 1/60 x DATA(-1, 1)
+
+ 3 3 3
+ + 1/120 x DATA(2, 1) - 1/120 x DATA(2, -1) - 1/60 x DATA(-2, 2)
+
+ 3 3 3
+ - 1/120 x DATA(-2, 1) + 1/120 x DATA(-2, -1) - 1/60 x DATA(2, -2)
+
+ 3 2 3
+ - 1/30 x DATA(-1, -2) - 1/35 x DATA(-2, -2) - 1/30 x DATA(1, 2)
+
+ 3 2 2
+ + 1/60 x DATA(2, 2) - 1/140 x DATA(1, 1) + 1/140 x DATA(1, -1)
+
+ 2 2 2
+ + 1/140 x DATA(-1, -1) - 1/140 x DATA(-1, 1) - 1/49 x y DATA(-1, -2)
+
+ 2 2 2
+ + 1/98 x y DATA(1, -1) - 1/49 x y DATA(-2, -1) + 1/40 x y DATA(1, 2)
+
+ 2 2 2
+ + 1/20 x y DATA(2, 2) - 1/40 x y DATA(-1, 2) - 1/20 x y DATA(1, 1)
+
+ 2 2 2
+ + 1/20 x y DATA(1, -1) - 1/20 x y DATA(-1, -1) + 1/20 x y DATA(-1, 1)
+
+ 2
+ + 1/20 x y DATA(-2, -2) + 1/35 x y DATA(1, 2) - 1/70 x y DATA(1, -1)
+
+ 2 2 2
+ - 1/49 x y DATA(1, -2) - 1/49 x y DATA(-1, 2) - 1/49 x y DATA(-2, 1)
+
+ 31
+ - 1/70 x y DATA(1, 1) + --- DATA(2, -2) - 1/84 DATA(-1, -2)
+ 420
+
+ 17 2
+ - --- DATA(0, -2) - 1/84 DATA(1, -2) - 1/49 x y DATA(2, -1)
+ 420
+
+ 2 2 2
+ + 2/49 x y DATA(-2, -2) - 1/49 x y DATA(1, 2) - 1/49 x y DATA(2, 1)
+
+ 2 2 2
+ + 2/49 x y DATA(2, 2) + 2/49 x y DATA(2, -2) + 2/49 x y DATA(-2, 2)
+
+ 2
+ + 1/98 x y DATA(-1, 1) + 1/70 x y DATA(-1, -1) + 1/70 x y DATA(-1, 1)
+
+ 2 2 2
+ - 1/70 x DATA(1, 2) + 1/70 x DATA(2, 1) - 1/70 x DATA(-1, 2)
+
+ 2 2 2
+ - 1/70 x DATA(2, -1) + 1/35 x DATA(2, 2) + 1/35 x DATA(-2, 2)
+
+ 2 2 2
+ + 1/70 x DATA(-2, 1) - 1/70 x DATA(-2, -1) - 1/35 x DATA(2, -2)
+
+ 2 2 31
+ + 1/70 x DATA(-1, -2) + 1/70 x DATA(1, -2) + --- DATA(-2, -2)
+ 420
+
+ 2 2
+ + 2/35 x y DATA(-2, 0) + 1/49 x y DATA(-1, 0) - 2/49 x y DATA(2, 0)
+
+ 2 2
+ - 2/49 x y DATA(-2, 0) - 2/49 x y DATA(0, 2) - 1/35 x y DATA(1, 0)
+
+ 2 2
+ + 1/35 x y DATA(-1, 0) + 1/49 x y DATA(0, -1) + 2/49 x y DATA(0, 0)
+
+ 2 2 2
+ + 1/49 x y DATA(1, 0) + 1/49 x y DATA(0, 1) - 1/70 x DATA(0, 1)
+
+> coeff_as_lc_of_data(%, posn_list_2d_size5);
+bytes used=84109804, alloc=2424388, time=7.95
+ 31 3 2 2 11 3
+[COEFF(-2, -2) = --- + 1/30 y - 1/35 x - 1/20 y - --- x + 1/60 x
+ 420 150
+
+ 2 2 289 2
+ + 2/49 x y + 1/20 x y - ---- y - 2/35 x y, COEFF(-1, -2) = - 1/20 y
+ 2940
+
+ 21 2 2 2 71 3
+ + --- x - 1/49 x y + 1/40 x y + 1/70 x - 1/84 + ---- y - 1/30 x
+ 200 2940
+
+ 3
+ - 1/35 x y + 1/30 y ,
+
+ 191 17 2 2 3 2
+ COEFF(0, -2) = ---- y - --- - 2/49 x y + 1/35 x + 1/30 y - 1/20 y ,
+ 2940 420
+
+ 3 2 2 21
+ COEFF(1, -2) = 1/35 x y + 1/30 x - 1/49 x y - 1/84 - 1/20 y - --- x
+ 200
+
+ 2 2 71 3 3
+ + 1/70 x - 1/40 x y + ---- y + 1/30 y , COEFF(2, -2) = - 1/60 x
+ 2940
+
+ 2 31 11 289 2 2
+ + 2/35 x y - 1/35 x + --- + --- x - ---- y - 1/20 y + 2/49 x y
+ 420 150 2940
+
+ 2 3 21 2 3 226
+ - 1/20 x y + 1/30 y , COEFF(-2, -1) = --- x - 1/10 x y - 2/15 y + --- y
+ 200 735
+
+ 3 2 2 11 2
+ + 1/120 x + 1/35 x y + 1/10 y - 1/70 x - --- - 1/49 x y, COEFF(-1, -1)
+ 105
+
+ 2 37 2 181 2 2
+ = - 1/20 x y + 1/70 x y + --- x + 1/10 y + --- y + 1/98 x y + 1/140 x
+ 300 735
+
+ 3 3 31
+ - 2/15 y - 1/60 x - ---,
+ 210
+
+ 17 2 166 2 2 3
+ COEFF(0, -1) = - --- + 1/49 x y + --- y + 1/10 y + 1/70 x - 2/15 y ,
+ 105 735
+
+ 181 2 2 2 31 3
+ COEFF(1, -1) = --- y + 1/140 x + 1/98 x y + 1/10 y - --- - 2/15 y
+ 735 210
+
+ 37 3 2 11
+ - --- x + 1/60 x - 1/70 x y + 1/20 x y , COEFF(2, -1) = - 1/35 x y - ---
+ 300 105
+
+ 2 21 226 3 3 2 2
+ + 1/10 x y - --- x + --- y - 1/120 x - 2/15 y - 1/49 x y + 1/10 y
+ 200 735
+
+ 2 3 41 2
+ - 1/70 x , COEFF(-2, 0) = 1/5 y - -- y + 2/35 x y - 2/49 x y,
+ 98
+
+ 3 53 2
+ COEFF(-1, 0) = 1/5 y - -- y + 1/49 x y + 1/35 x y,
+ 98
+
+ 2 57 3
+ COEFF(0, 0) = 2/49 x y - -- y + 1/5 y ,
+ 98
+
+ 3 53 2
+ COEFF(1, 0) = 1/5 y - -- y + 1/49 x y - 1/35 x y,
+ 98
+
+ 3 2 41
+ COEFF(2, 0) = 1/5 y - 2/35 x y - 2/49 x y - -- y, COEFF(-2, 1) =
+ 98
+
+ 3 3 11 2 2 226
+ - 1/120 x - 2/15 y + --- - 1/49 x y + 1/70 x + 1/35 x y + --- y
+ 105 735
+
+ 2 2 21 37 2
+ + 1/10 x y - 1/10 y - --- x, COEFF(-1, 1) = - --- x + 1/20 x y
+ 200 300
+
+ 3 31 2 2 3 2
+ + 1/70 x y + 1/60 x + --- - 1/140 x - 1/10 y - 2/15 y + 1/98 x y
+ 210
+
+ 181
+ + --- y,
+ 735
+
+ 17 3 2 166 2 2
+ COEFF(0, 1) = --- - 2/15 y - 1/70 x + --- y - 1/10 y + 1/49 x y,
+ 105 735
+
+ 31 3 3 2 2
+ COEFF(1, 1) = --- - 1/60 x - 2/15 y - 1/70 x y - 1/20 x y - 1/10 y
+ 210
+
+ 181 2 37 2 2 21
+ + --- y + 1/98 x y + --- x - 1/140 x , COEFF(2, 1) = - 1/49 x y + --- x
+ 735 300 200
+
+ 226 2 2 11 2 3
+ + --- y - 1/10 y + 1/70 x - 1/35 x y + --- - 1/10 x y + 1/120 x
+ 735 105
+
+ 3 3 2 289 31 3
+ - 2/15 y , COEFF(-2, 2) = - 1/60 x + 1/35 x - ---- y - --- + 1/30 y
+ 2940 420
+
+ 11 2 2 2
+ + --- x + 2/49 x y - 2/35 x y - 1/20 x y + 1/20 y , COEFF(-1, 2) =
+ 150
+
+ 21 2 2 71 2 2
+ - --- x - 1/49 x y + 1/20 y + ---- y - 1/40 x y - 1/70 x + 1/84
+ 200 2940
+
+ 3 3
+ - 1/35 x y + 1/30 x + 1/30 y ,
+
+ 2 17 191 2 3 2
+ COEFF(0, 2) = 1/20 y + --- + ---- y - 1/35 x + 1/30 y - 2/49 x y,
+ 420 2940
+
+ 2 2 3 2 21
+ COEFF(1, 2) = - 1/70 x + 1/35 x y - 1/49 x y - 1/30 x + 1/20 y + --- x
+ 200
+
+ 3 71 2 3 289
+ + 1/30 y + ---- y + 1/84 + 1/40 x y , COEFF(2, 2) = 1/60 x - ---- y
+ 2940 2940
+
+ 2 2 3 31 2 2 11
+ + 1/35 x + 1/20 y + 1/30 y - --- + 2/49 x y + 1/20 x y - --- x
+ 420 150
+
+ + 2/35 x y]
+
+> print_coeff__lc_of_data(%, "coeff_dy_", "fp",
+> "2d.coeffs/2d.cube.order4.smooth0/coeff-dy.compute.c");
+bytes used=85110104, alloc=2424388, time=8.01
+bytes used=86110296, alloc=2424388, time=8.09
+bytes used=87116120, alloc=2424388, time=8.16
+bytes used=88116280, alloc=2424388, time=8.30
+bytes used=89116760, alloc=2424388, time=8.38
+bytes used=90116912, alloc=2424388, time=8.48
+bytes used=91117288, alloc=2424388, time=8.64
+bytes used=92117484, alloc=2424388, time=8.73
+bytes used=93117892, alloc=2424388, time=8.88
+bytes used=94118116, alloc=2424388, time=8.97
+bytes used=95118268, alloc=2424388, time=9.12
+>
+# d^2/dx^2
+> simplify( diff(interp_2d_cube_order4_smooth0,x,x) );
+bytes used=96118472, alloc=2424388, time=9.19
+ 57 166 53 181
+- -- DATA(0, 0) + --- DATA(1, 0) - -- DATA(0, 1) + --- DATA(1, 1)
+ 98 735 98 735
+
+ 2
+ + 3/5 x DATA(0, -2) - 1/35 y DATA(0, 1) + 1/35 y DATA(0, -1)
+
+ 2 2
+ + 2/35 y DATA(0, -2) - 2/49 y DATA(0, 2) - 2/49 y DATA(0, -2)
+
+ 2 2
+ - 2/35 y DATA(0, 2) + 1/49 y DATA(0, 1) + 1/49 y DATA(0, -1)
+
+ 2 2 166
+ + 3/5 x DATA(0, -1) + 3/5 x DATA(0, 2) + --- DATA(-1, 0)
+ 735
+
+ 181 53 181 181
+ + --- DATA(1, -1) - -- DATA(0, -1) + --- DATA(-1, -1) + --- DATA(-1, 1)
+ 735 98 735 735
+
+ 2 2
+ - 2/49 y DATA(-2, 0) - 1/10 x DATA(-2, 0) - 2/49 y DATA(2, 0)
+
+ 2 2 2
+ + 2/49 y DATA(0, 0) + 1/49 y DATA(1, 0) + 1/49 y DATA(-1, 0)
+
+ 2 2
+ + 1/10 x DATA(2, 0) + 3/5 x DATA(0, 0) - 2/5 x DATA(1, 0)
+
+ 2 2 2
+ + 1/10 x DATA(-2, 0) - 2/5 x DATA(-1, 0) + 1/10 x DATA(2, 0)
+
+ 226 289
+ - 1/5 x DATA(1, 0) + 1/5 x DATA(-1, 0) + --- DATA(1, 2) - ---- DATA(2, 2)
+ 735 2940
+
+ 191 71 226 41
+ + ---- DATA(2, 0) + ---- DATA(2, 1) + --- DATA(-1, 2) - -- DATA(0, 2)
+ 2940 2940 735 98
+
+ 71 289 71
+ + ---- DATA(2, -1) - ---- DATA(-2, 2) + ---- DATA(-2, 1)
+ 2940 2940 2940
+
+ 2 2 2
+ - 1/49 y DATA(2, 1) - 1/49 y DATA(-1, 2) - 1/49 y DATA(2, -1)
+
+ 2 2 2
+ + 2/49 y DATA(-2, 2) - 1/49 y DATA(-2, 1) - 1/49 y DATA(-2, -1)
+
+ 2 2 2
+ + 2/49 y DATA(2, -2) - 1/49 y DATA(-1, -2) + 2/49 y DATA(2, 2)
+
+ 2 2 2
+ + 1/98 y DATA(1, 1) + 1/98 y DATA(1, -1) + 1/98 y DATA(-1, -1)
+
+ 2
+ + 1/98 y DATA(-1, 1) + 1/5 x y DATA(-1, 2) + 1/20 x y DATA(-2, -1)
+
+ - 1/10 x y DATA(2, -2) + 1/10 x y DATA(2, 2) + 1/20 x y DATA(2, 1)
+
+ - 1/70 y DATA(1, 1) - 1/20 x y DATA(2, -1) - 1/10 x y DATA(-2, 2)
+
+ - 1/20 x y DATA(-2, 1) - 1/35 y DATA(-1, 2) - 1/35 y DATA(2, -1)
+
+ + 2/35 y DATA(-2, 2) + 1/35 y DATA(-2, 1) - 1/35 y DATA(-2, -1)
+
+ - 2/35 y DATA(2, -2) + 1/35 y DATA(-1, -2) + 1/35 y DATA(1, -2)
+
+ 2
+ - 2/35 y DATA(-2, -2) + 1/70 y DATA(1, -1) - 1/49 y DATA(1, -2)
+
+ 2 2
+ + 2/49 y DATA(-2, -2) - 1/49 y DATA(1, 2) - 1/5 x y DATA(-1, -2)
+
+ + 1/5 x y DATA(1, -2) + 1/10 x y DATA(-2, -2) + 1/70 y DATA(-1, -1)
+
+ - 1/70 y DATA(-1, 1) - 1/35 y DATA(1, 2) + 2/35 y DATA(2, 2)
+
+ + 1/35 y DATA(2, 1) + 1/10 x DATA(2, -1) - 1/10 x DATA(-2, 2)
+
+ - 1/10 x DATA(-2, 1) - 1/10 x DATA(-2, -1) + 1/10 x DATA(2, -2)
+
+ + 1/5 x DATA(-1, -2) - 1/5 x DATA(1, -2) - 1/10 x DATA(-2, -2)
+
+ 71 191
+ + 1/10 x DATA(2, 1) + ---- DATA(-2, -1) + ---- DATA(-2, 0)
+ 2940 2940
+
+ + 1/5 x DATA(-1, 2) - 1/5 x DATA(1, 1) - 1/5 x DATA(1, -1)
+
+ + 1/5 x DATA(-1, -1) + 1/5 x DATA(-1, 1) - 1/5 x DATA(1, 2)
+
+ 2 2
+ + 1/10 x DATA(2, 2) + 1/10 x DATA(-2, -2) - 2/5 x DATA(1, 1)
+
+ 2 2 2
+ - 2/5 x DATA(1, -1) - 2/5 x DATA(-1, -1) - 2/5 x DATA(-1, 1)
+
+ - 1/5 x y DATA(1, 2) + 1/10 x y DATA(1, -1) - 1/10 x y DATA(1, 1)
+
+ 289 226 41 226
+ - ---- DATA(2, -2) + --- DATA(-1, -2) - -- DATA(0, -2) + --- DATA(1, -2)
+ 2940 735 98 735
+
+ 2
+ - 1/10 x y DATA(-1, -1) + 1/10 x y DATA(-1, 1) - 2/5 x DATA(1, 2)
+
+ 2 2 2
+ + 1/10 x DATA(2, 1) - 2/5 x DATA(-1, 2) + 1/10 x DATA(2, -1)
+
+ 2 2 2
+ + 1/10 x DATA(2, 2) + 1/10 x DATA(-2, 2) + 1/10 x DATA(-2, 1)
+
+ 2 2 2
+ + 1/10 x DATA(-2, -1) + 1/10 x DATA(2, -2) - 2/5 x DATA(-1, -2)
+
+ 2 289 2
+ - 2/5 x DATA(1, -2) - ---- DATA(-2, -2) + 3/5 x DATA(0, 1)
+ 2940
+
+> coeff_as_lc_of_data(%, posn_list_2d_size5);
+bytes used=97118648, alloc=2424388, time=9.26
+ 2 289 2
+[COEFF(-2, -2) = 1/10 x y - 2/35 y + 2/49 y - ---- + 1/10 x - 1/10 x,
+ 2940
+
+ 2 226 2
+ COEFF(-1, -2) = - 1/5 x y - 2/5 x + 1/35 y + --- + 1/5 x - 1/49 y ,
+ 735
+
+ 2 2 41
+ COEFF(0, -2) = 2/35 y - 2/49 y + 3/5 x - --,
+ 98
+
+ 226 2 2
+ COEFF(1, -2) = --- - 2/5 x + 1/35 y + 1/5 x y - 1/5 x - 1/49 y ,
+ 735
+
+ 2 289 2
+ COEFF(2, -2) = 2/49 y - ---- - 2/35 y + 1/10 x + 1/10 x - 1/10 x y,
+ 2940
+
+ 71 2 2
+ COEFF(-2, -1) = - 1/10 x + ---- - 1/49 y + 1/10 x - 1/35 y + 1/20 x y,
+ 2940
+
+ 2 2 181
+ COEFF(-1, -1) = - 2/5 x + 1/98 y + 1/5 x + --- - 1/10 x y + 1/70 y,
+ 735
+
+ 53 2 2
+ COEFF(0, -1) = - -- + 1/35 y + 1/49 y + 3/5 x ,
+ 98
+
+ 2 2 181
+ COEFF(1, -1) = 1/70 y + 1/98 y - 2/5 x - 1/5 x + 1/10 x y + ---,
+ 735
+
+ 2 2 71
+ COEFF(2, -1) = 1/10 x - 1/35 y - 1/49 y + 1/10 x + ---- - 1/20 x y,
+ 2940
+
+ 2 2 191
+ COEFF(-2, 0) = - 1/10 x + 1/10 x - 2/49 y + ----,
+ 2940
+
+ 2 2 166
+ COEFF(-1, 0) = - 2/5 x + 1/49 y + --- + 1/5 x,
+ 735
+
+ 2 57 2
+ COEFF(0, 0) = 2/49 y - -- + 3/5 x ,
+ 98
+
+ 2 2 166
+ COEFF(1, 0) = - 1/5 x + 1/49 y - 2/5 x + ---,
+ 735
+
+ 2 191 2
+ COEFF(2, 0) = 1/10 x - 2/49 y + ---- + 1/10 x ,
+ 2940
+
+ 71 2 2
+ COEFF(-2, 1) = ---- - 1/49 y + 1/10 x + 1/35 y - 1/20 x y - 1/10 x,
+ 2940
+
+ 181 2 2
+ COEFF(-1, 1) = 1/5 x + --- + 1/10 x y - 2/5 x + 1/98 y - 1/70 y,
+ 735
+
+ 53 2 2
+ COEFF(0, 1) = - -- + 3/5 x + 1/49 y - 1/35 y,
+ 98
+
+ 181 2 2
+ COEFF(1, 1) = --- + 1/98 y - 2/5 x - 1/70 y - 1/5 x - 1/10 x y,
+ 735
+
+ 2 71 2
+ COEFF(2, 1) = 1/10 x + 1/35 y + 1/10 x + ---- + 1/20 x y - 1/49 y ,
+ 2940
+
+ 2 289 2
+ COEFF(-2, 2) = 2/49 y + 2/35 y - ---- - 1/10 x y - 1/10 x + 1/10 x ,
+ 2940
+
+ 226 2 2
+ COEFF(-1, 2) = --- - 2/5 x + 1/5 x + 1/5 x y - 1/49 y - 1/35 y,
+ 735
+
+ 41 2 2
+ COEFF(0, 2) = - -- - 2/35 y - 2/49 y + 3/5 x ,
+ 98
+
+ 2 226 2
+ COEFF(1, 2) = - 1/5 x - 2/5 x - 1/5 x y + --- - 1/49 y - 1/35 y,
+ 735
+
+ 2 289 2
+ COEFF(2, 2) = 1/10 x + 2/49 y - ---- + 1/10 x + 2/35 y + 1/10 x y]
+ 2940
+
+> print_coeff__lc_of_data(%, "coeff_dxx_", "fp",
+> "2d.coeffs/2d.cube.order4.smooth0/coeff-dxx.compute.c");
+bytes used=98118800, alloc=2424388, time=9.34
+bytes used=99118996, alloc=2424388, time=9.43
+bytes used=100119256, alloc=2424388, time=9.58
+bytes used=101122084, alloc=2424388, time=9.74
+bytes used=102122280, alloc=2424388, time=9.85
+bytes used=103122400, alloc=2424388, time=9.97
+>
+# d^2/dxdy
+> simplify( diff(interp_2d_cube_order4_smooth0,x,y) );
+bytes used=104122552, alloc=2424388, time=10.13
+bytes used=105123136, alloc=2424388, time=10.20
+37
+--- DATA(1, 1) - 4/49 x y DATA(-2, 0) - 4/49 x y DATA(0, -2)
+300
+
+ + 4/49 x y DATA(0, 0) + 2/49 x y DATA(0, -1) - 4/49 x y DATA(0, 2)
+
+ + 2/49 x y DATA(0, 1) + 2/49 x y DATA(1, 0) - 4/49 x y DATA(2, 0)
+
+ + 2/49 x y DATA(-1, 0) + 1/35 y DATA(-1, 0) + 2/35 y DATA(-2, 0)
+
+ 37 37 37
+ - --- DATA(1, -1) + --- DATA(-1, -1) - --- DATA(-1, 1) - 2/35 y DATA(2, 0)
+ 300 300 300
+
+ 21 11
+ - 1/35 y DATA(1, 0) - 1/35 x DATA(0, 1) + --- DATA(1, 2) - --- DATA(2, 2)
+ 200 150
+
+ 21 21 21 11
+ + --- DATA(2, 1) - --- DATA(-1, 2) - --- DATA(2, -1) + --- DATA(-2, 2)
+ 200 200 200 150
+
+ 21 2 2
+ - --- DATA(-2, 1) - 1/10 y DATA(2, 1) - 1/40 y DATA(-1, 2)
+ 200
+
+ 2 2 2
+ + 1/10 y DATA(2, -1) - 1/20 y DATA(-2, 2) + 1/10 y DATA(-2, 1)
+
+ 2 2 2
+ - 1/10 y DATA(-2, -1) - 1/20 y DATA(2, -2) + 1/40 y DATA(-1, -2)
+
+ 2 2 2
+ + 1/20 y DATA(2, 2) - 1/20 y DATA(1, 1) + 1/20 y DATA(1, -1)
+
+ 2 2
+ - 1/20 y DATA(-1, -1) + 1/20 y DATA(-1, 1) - 2/49 x y DATA(-1, 2)
+
+ - 2/49 x y DATA(-2, -1) + 4/49 x y DATA(2, -2) + 4/49 x y DATA(2, 2)
+
+ - 2/49 x y DATA(2, 1) - 1/70 y DATA(1, 1) - 2/49 x y DATA(2, -1)
+
+ + 4/49 x y DATA(-2, 2) - 2/49 x y DATA(-2, 1) - 1/35 y DATA(-1, 2)
+
+ - 1/35 y DATA(2, -1) - 2/35 y DATA(-2, 2) + 1/35 y DATA(-2, 1)
+
+ + 1/35 y DATA(-2, -1) + 2/35 y DATA(2, -2) - 1/35 y DATA(-1, -2)
+
+ + 1/35 y DATA(1, -2) - 2/35 y DATA(-2, -2) - 1/70 y DATA(1, -1)
+
+ 2 2 2
+ - 1/40 y DATA(1, -2) + 1/20 y DATA(-2, -2) + 1/40 y DATA(1, 2)
+
+ - 2/49 x y DATA(-1, -2) - 2/49 x y DATA(1, -2) + 4/49 x y DATA(-2, -2)
+
+ + 1/70 y DATA(-1, -1) + 1/70 y DATA(-1, 1) + 1/35 y DATA(1, 2)
+
+ + 2/35 y DATA(2, 2) - 1/35 y DATA(2, 1) - 1/35 x DATA(2, -1)
+
+ + 2/35 x DATA(-2, 2) + 1/35 x DATA(-2, 1) - 1/35 x DATA(-2, -1)
+
+ - 2/35 x DATA(2, -2) + 1/35 x DATA(-1, -2) + 1/35 x DATA(1, -2)
+
+ 21
+ - 2/35 x DATA(-2, -2) + 1/35 x DATA(2, 1) + --- DATA(-2, -1)
+ 200
+
+ - 1/35 x DATA(-1, 2) - 1/70 x DATA(1, 1) + 1/70 x DATA(1, -1)
+
+ + 1/70 x DATA(-1, -1) - 1/70 x DATA(-1, 1) - 1/35 x DATA(1, 2)
+
+ 2 2
+ + 2/35 x DATA(2, 2) + 1/20 x DATA(-2, -2) - 1/20 x DATA(1, 1)
+
+ 2 2 2
+ + 1/20 x DATA(1, -1) - 1/20 x DATA(-1, -1) + 1/20 x DATA(-1, 1)
+
+ - 2/49 x y DATA(1, 2) + 1/49 x y DATA(1, -1) + 1/49 x y DATA(1, 1)
+
+ 11 21 21
+ + --- DATA(2, -2) + --- DATA(-1, -2) - --- DATA(1, -2)
+ 150 200 200
+
+ 2
+ + 1/49 x y DATA(-1, -1) + 1/49 x y DATA(-1, 1) - 1/10 x DATA(1, 2)
+
+ 2 2 2
+ + 1/40 x DATA(2, 1) + 1/10 x DATA(-1, 2) - 1/40 x DATA(2, -1)
+
+ 2 2 2
+ + 1/20 x DATA(2, 2) - 1/20 x DATA(-2, 2) - 1/40 x DATA(-2, 1)
+
+ 2 2 2
+ + 1/40 x DATA(-2, -1) - 1/20 x DATA(2, -2) - 1/10 x DATA(-1, -2)
+
+ 2 11
+ + 1/10 x DATA(1, -2) - --- DATA(-2, -2) - 2/35 x DATA(0, 2)
+ 150
+
+ + 1/35 x DATA(0, -1) + 2/35 x DATA(0, -2)
+
+> coeff_as_lc_of_data(%, posn_list_2d_size5);
+ 2 2 11
+[COEFF(-2, -2) = 4/49 x y + 1/20 x + 1/20 y - 2/35 y - 2/35 x - ---,
+ 150
+
+ 2 2 21
+ COEFF(-1, -2) = - 2/49 x y - 1/35 y + 1/35 x + 1/40 y - 1/10 x + ---,
+ 200
+
+ COEFF(0, -2) = 2/35 x - 4/49 x y,
+
+ 2 21 2
+ COEFF(1, -2) = - 2/49 x y + 1/35 x + 1/10 x + 1/35 y - --- - 1/40 y ,
+ 200
+
+ 11 2 2
+ COEFF(2, -2) = --- - 1/20 y - 1/20 x - 2/35 x + 4/49 x y + 2/35 y,
+ 150
+
+ 21 2 2
+ COEFF(-2, -1) = --- + 1/35 y - 1/10 y - 2/49 x y - 1/35 x + 1/40 x ,
+ 200
+
+ 2 2 37
+ COEFF(-1, -1) = 1/49 x y - 1/20 y - 1/20 x + 1/70 x + 1/70 y + ---,
+ 300
+
+ COEFF(0, -1) = 1/35 x + 2/49 x y,
+
+ 37 2 2
+ COEFF(1, -1) = - --- + 1/49 x y + 1/20 x - 1/70 y + 1/70 x + 1/20 y ,
+ 300
+
+ 2 2 21
+ COEFF(2, -1) = - 1/35 x + 1/10 y - 2/49 x y - 1/35 y - 1/40 x - ---,
+ 200
+
+ COEFF(-2, 0) = 2/35 y - 4/49 x y, COEFF(-1, 0) = 1/35 y + 2/49 x y,
+
+ COEFF(0, 0) = 4/49 x y, COEFF(1, 0) = - 1/35 y + 2/49 x y,
+
+ COEFF(2, 0) = - 4/49 x y - 2/35 y,
+
+ 2 2 21
+ COEFF(-2, 1) = 1/35 y + 1/35 x - 2/49 x y + 1/10 y - 1/40 x - ---,
+ 200
+
+ 2 37 2
+ COEFF(-1, 1) = 1/20 y - --- - 1/70 x + 1/20 x + 1/70 y + 1/49 x y,
+ 300
+
+ COEFF(0, 1) = - 1/35 x + 2/49 x y,
+
+ 37 2 2
+ COEFF(1, 1) = 1/49 x y + --- - 1/20 y - 1/70 x - 1/20 x - 1/70 y,
+ 300
+
+ 21 2 2
+ COEFF(2, 1) = --- + 1/40 x - 1/10 y + 1/35 x - 1/35 y - 2/49 x y,
+ 200
+
+ 2 2 11
+ COEFF(-2, 2) = - 1/20 x + 4/49 x y + 2/35 x - 1/20 y - 2/35 y + ---,
+ 150
+
+ 2 2 21
+ COEFF(-1, 2) = 1/10 x - 1/35 y - 1/35 x - 1/40 y - --- - 2/49 x y,
+ 200
+
+ COEFF(0, 2) = - 2/35 x - 4/49 x y,
+
+ 2 2 21
+ COEFF(1, 2) = - 1/35 x + 1/40 y - 2/49 x y + 1/35 y - 1/10 x + ---,
+ 200
+
+ 2 11 2
+ COEFF(2, 2) = 2/35 y + 4/49 x y + 1/20 x - --- + 2/35 x + 1/20 y ]
+ 150
+
+> print_coeff__lc_of_data(%, "coeff_dxy_", "fp",
+> "2d.coeffs/2d.cube.order4.smooth0/coeff-dxy.compute.c");
+bytes used=106123844, alloc=2424388, time=10.27
+bytes used=107128472, alloc=2424388, time=10.35
+bytes used=108128708, alloc=2424388, time=10.53
+bytes used=109128920, alloc=2424388, time=10.69
+bytes used=110129208, alloc=2424388, time=10.83
+bytes used=111129472, alloc=2424388, time=11.03
+bytes used=112129776, alloc=2424388, time=11.21
+>
+# d^2/dy^2
+> simplify( diff(interp_2d_cube_order4_smooth0,y,y) );
+bytes used=113130192, alloc=2424388, time=11.31
+bytes used=114130376, alloc=2424388, time=11.38
+ 57 53 166 181
+- -- DATA(0, 0) - -- DATA(1, 0) + --- DATA(0, 1) + --- DATA(1, 1)
+ 98 98 735 735
+
+ 53 181 166 181
+ - -- DATA(-1, 0) + --- DATA(1, -1) + --- DATA(0, -1) + --- DATA(-1, -1)
+ 98 735 735 735
+
+ 181 71 289 41
+ + --- DATA(-1, 1) + ---- DATA(1, 2) - ---- DATA(2, 2) - -- DATA(2, 0)
+ 735 2940 2940 98
+
+ 226 71 191 226
+ + --- DATA(2, 1) + ---- DATA(-1, 2) + ---- DATA(0, 2) + --- DATA(2, -1)
+ 735 2940 2940 735
+
+ 289 226 2
+ - ---- DATA(-2, 2) + --- DATA(-2, 1) - 2/5 y DATA(2, 1)
+ 2940 735
+
+ 2 2 2
+ + 1/10 y DATA(-1, 2) - 2/5 y DATA(2, -1) + 1/10 y DATA(-2, 2)
+
+ 2 2 2
+ - 2/5 y DATA(-2, 1) - 2/5 y DATA(-2, -1) + 1/10 y DATA(2, -2)
+
+ 2 2 2
+ + 1/10 y DATA(-1, -2) + 1/10 y DATA(2, 2) - 2/5 y DATA(1, 1)
+
+ 2 2 2
+ - 2/5 y DATA(1, -1) - 2/5 y DATA(-1, -1) - 2/5 y DATA(-1, 1)
+
+ - 1/20 x y DATA(-1, 2) - 1/5 x y DATA(-2, -1) - 1/10 x y DATA(2, -2)
+
+ + 1/10 x y DATA(2, 2) - 1/5 x y DATA(2, 1) - 1/5 y DATA(1, 1)
+
+ + 1/5 x y DATA(2, -1) - 1/10 x y DATA(-2, 2) + 1/5 x y DATA(-2, 1)
+
+ + 1/10 y DATA(-1, 2) + 1/5 y DATA(2, -1) + 1/10 y DATA(-2, 2)
+
+ - 1/5 y DATA(-2, 1) + 1/5 y DATA(-2, -1) - 1/10 y DATA(2, -2)
+
+ - 1/10 y DATA(-1, -2) - 1/10 y DATA(1, -2) - 1/10 y DATA(-2, -2)
+
+ 2 2
+ + 1/5 y DATA(1, -1) + 1/10 y DATA(1, -2) + 1/10 y DATA(-2, -2)
+
+ 2
+ + 1/10 y DATA(1, 2) + 1/20 x y DATA(-1, -2) - 1/20 x y DATA(1, -2)
+
+ + 1/10 x y DATA(-2, -2) + 1/5 y DATA(-1, -1) - 1/5 y DATA(-1, 1)
+
+ + 1/10 y DATA(1, 2) + 1/10 y DATA(2, 2) - 1/5 y DATA(2, 1)
+
+ - 1/35 x DATA(2, -1) - 2/35 x DATA(-2, 2) + 1/35 x DATA(-2, 1)
+
+ + 1/35 x DATA(-2, -1) + 2/35 x DATA(2, -2) - 1/35 x DATA(-1, -2)
+
+ + 1/35 x DATA(1, -2) - 2/35 x DATA(-2, -2) - 1/35 x DATA(2, 1)
+
+ 226 41
+ + --- DATA(-2, -1) - -- DATA(-2, 0) - 1/35 x DATA(-1, 2)
+ 735 98
+
+ - 1/70 x DATA(1, 1) - 1/70 x DATA(1, -1) + 1/70 x DATA(-1, -1)
+
+ + 1/70 x DATA(-1, 1) + 1/35 x DATA(1, 2) + 2/35 x DATA(2, 2)
+
+ 2 2 2
+ + 2/49 x DATA(-2, -2) + 1/98 x DATA(1, 1) + 1/98 x DATA(1, -1)
+
+ 2 2
+ + 1/98 x DATA(-1, -1) + 1/98 x DATA(-1, 1) + 1/20 x y DATA(1, 2)
+
+ 289
+ + 1/10 x y DATA(1, -1) - 1/10 x y DATA(1, 1) - ---- DATA(2, -2)
+ 2940
+
+ 71 191 71
+ + ---- DATA(-1, -2) + ---- DATA(0, -2) + ---- DATA(1, -2)
+ 2940 2940 2940
+
+ 2
+ - 1/10 x y DATA(-1, -1) + 1/10 x y DATA(-1, 1) - 1/49 x DATA(1, 2)
+
+ 2 2 2
+ - 1/49 x DATA(2, 1) - 1/49 x DATA(-1, 2) - 1/49 x DATA(2, -1)
+
+ 2 2 2
+ + 2/49 x DATA(2, 2) + 2/49 x DATA(-2, 2) - 1/49 x DATA(-2, 1)
+
+ 2 2 2
+ - 1/49 x DATA(-2, -1) + 2/49 x DATA(2, -2) - 1/49 x DATA(-1, -2)
+
+ 2 289
+ - 1/49 x DATA(1, -2) - ---- DATA(-2, -2) - 1/35 x DATA(1, 0)
+ 2940
+
+ + 1/35 x DATA(-1, 0) + 1/5 y DATA(0, -1) - 2/35 x DATA(2, 0)
+
+ 2
+ + 1/10 y DATA(0, 2) - 1/10 y DATA(0, -2) + 3/5 y DATA(-2, 0)
+
+ 2 2
+ + 3/5 y DATA(-1, 0) + 3/5 y DATA(1, 0) + 2/35 x DATA(-2, 0)
+
+ 2 2 2
+ + 3/5 y DATA(0, 0) - 2/5 y DATA(0, 1) - 2/5 y DATA(0, -1)
+
+ 2 2 2
+ + 1/10 y DATA(0, 2) + 1/10 y DATA(0, -2) + 1/49 x DATA(1, 0)
+
+ 2 2 2
+ + 3/5 y DATA(2, 0) - 2/49 x DATA(-2, 0) + 1/49 x DATA(-1, 0)
+
+ 2 2
+ - 1/5 y DATA(0, 1) + 2/49 x DATA(0, 0) + 1/49 x DATA(0, 1)
+
+ 2 2 2
+ + 1/49 x DATA(0, -1) - 2/49 x DATA(0, 2) - 2/49 x DATA(0, -2)
+
+ 2
+ - 2/49 x DATA(2, 0)
+
+> coeff_as_lc_of_data(%, posn_list_2d_size5);
+ 2 2 289
+[COEFF(-2, -2) = 1/10 y + 1/10 x y - 2/35 x + 2/49 x - 1/10 y - ----,
+ 2940
+
+ 71 2 2
+ COEFF(-1, -2) = ---- + 1/10 y + 1/20 x y - 1/10 y - 1/35 x - 1/49 x ,
+ 2940
+
+ 2 191 2
+ COEFF(0, -2) = 1/10 y + ---- - 2/49 x - 1/10 y,
+ 2940
+
+ 2 2 71
+ COEFF(1, -2) = - 1/10 y + 1/35 x - 1/20 x y - 1/49 x + 1/10 y + ----,
+ 2940
+
+ 2 289 2
+ COEFF(2, -2) = 2/49 x - ---- + 1/10 y - 1/10 x y + 2/35 x - 1/10 y,
+ 2940
+
+ 2 2 226
+ COEFF(-2, -1) = 1/5 y - 2/5 y - 1/49 x + 1/35 x + --- - 1/5 x y,
+ 735
+
+ 2 181 2
+ COEFF(-1, -1) = - 2/5 y - 1/10 x y + 1/5 y + 1/70 x + --- + 1/98 x ,
+ 735
+
+ 2 2 166
+ COEFF(0, -1) = 1/49 x - 2/5 y + --- + 1/5 y,
+ 735
+
+ 2 2 181
+ COEFF(1, -1) = - 1/70 x + 1/5 y - 2/5 y + 1/10 x y + 1/98 x + ---,
+ 735
+
+ 2 226 2
+ COEFF(2, -1) = - 1/35 x - 2/5 y + --- - 1/49 x + 1/5 x y + 1/5 y,
+ 735
+
+ 41 2 2
+ COEFF(-2, 0) = - -- + 2/35 x - 2/49 x + 3/5 y ,
+ 98
+
+ 2 2 53
+ COEFF(-1, 0) = 3/5 y + 1/35 x + 1/49 x - --,
+ 98
+
+ 2 57 2
+ COEFF(0, 0) = 3/5 y - -- + 2/49 x ,
+ 98
+
+ 2 2 53
+ COEFF(1, 0) = 3/5 y + 1/49 x - 1/35 x - --,
+ 98
+
+ 41 2 2
+ COEFF(2, 0) = - -- - 2/49 x - 2/35 x + 3/5 y ,
+ 98
+
+ 226 2 2
+ COEFF(-2, 1) = 1/35 x - 1/5 y + --- + 1/5 x y - 2/5 y - 1/49 x ,
+ 735
+
+ 2 181 2
+ COEFF(-1, 1) = - 1/5 y + 1/70 x + 1/10 x y - 2/5 y + --- + 1/98 x ,
+ 735
+
+ 2 2 166
+ COEFF(0, 1) = - 2/5 y + 1/49 x - 1/5 y + ---,
+ 735
+
+ 181 2 2
+ COEFF(1, 1) = - 1/70 x + --- - 1/10 x y + 1/98 x - 2/5 y - 1/5 y,
+ 735
+
+ 226 2 2
+ COEFF(2, 1) = --- - 1/5 y - 1/49 x - 1/35 x - 2/5 y - 1/5 x y,
+ 735
+
+ 2 289 2
+ COEFF(-2, 2) = - 2/35 x + 2/49 x - 1/10 x y - ---- + 1/10 y + 1/10 y ,
+ 2940
+
+ 71 2 2
+ COEFF(-1, 2) = ---- - 1/49 x + 1/10 y - 1/35 x + 1/10 y - 1/20 x y,
+ 2940
+
+ 2 2 191
+ COEFF(0, 2) = - 2/49 x + 1/10 y + 1/10 y + ----,
+ 2940
+
+ 71 2 2
+ COEFF(1, 2) = ---- + 1/10 y + 1/20 x y + 1/10 y + 1/35 x - 1/49 x ,
+ 2940
+
+ 289 2 2
+ COEFF(2, 2) = - ---- + 1/10 y + 2/49 x + 2/35 x + 1/10 x y + 1/10 y ]
+ 2940
+
+> print_coeff__lc_of_data(%, "coeff_dyy_", "fp",
+> "2d.coeffs/2d.cube.order4.smooth0/coeff-dyy.compute.c");
+bytes used=115130604, alloc=2424388, time=11.46
+bytes used=116138968, alloc=2424388, time=11.55
+bytes used=117139208, alloc=2424388, time=11.72
+bytes used=118140008, alloc=2424388, time=11.80
+bytes used=119140212, alloc=2424388, time=12.00
+bytes used=120140404, alloc=2424388, time=12.21
+bytes used=121141040, alloc=2424388, time=12.38
+>
+################################################################################
+> quit
+bytes used=121567580, alloc=2424388, time=12.41